Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Linux Shell-Skript] WLAN-Wetterstation

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Linux Shell-Skript] WLAN-Wetterstation

    This topic has been deleted. Only users with topic management privileges can see it.
    • SBorg
      SBorg Forum Testing Most Active @Negalein last edited by

      @negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

      beim Start dieses Scripts von @liv-in-sky kommt nun

      + @all liv-in-sky Skript-Nutzer:
      Ändere mal so um Zeile ~#53 ab:

      let helper=JSON.parse(getState(id).val); 
      

      in

      //let helper=JSON.parse(getState(id).val); 
      let helper=getState(id).val[0];
      

      also Originalzeile auskommentieren und dafür die neue einfügen. Danach sollte es wieder laufen.

      Negalein 1 Reply Last reply Reply Quote 0
      • Thomas Braun
        Thomas Braun Most Active @Langer last edited by

        @langer

        Du springst da ja immer noch als root rum.
        Log dich aus und als Standarduser wieder an.

        ls -l /home/iobroker
        
        1 Reply Last reply Reply Quote 0
        • SBorg
          SBorg Forum Testing Most Active @da_Woody last edited by

          @da_woody sagte in [Linux Shell-Skript] WLAN-Wetterstation:

          schau in den spiegel, dann weist du, das ist nebensächlich...

          Jeden Morgen...
          "Ich kenn dich zwar nicht, wasch dich aber trotzdem..." 😀

          1 Reply Last reply Reply Quote 1
          • Negalein
            Negalein Global Moderator @SBorg last edited by

            @sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

            Danach sollte es wieder laufen.

            Merci
            läuft wieder 🙂

            1 Reply Last reply Reply Quote 0
            • Rene55
              Rene55 last edited by

              @SBorg Danke für die Antwort. Probleme mit Influx/Grafana hatte ich eigentlich noch keine, oder sind mir nicht aufgefallen. Die Fehlermeldung aus dem ersten Post hatte ich ja auch nur einmal beim ersten Start des Scripts V1.0.0. Und da ja in dem Lgeintrag drin stand "Please report this to the developer." dachte ich mir, das sollte der Entwickler mal beäugen. Wenns nur bei mir auftrat ist es auch nicht weiter wichtig - es läuft ja alles.
              LG Rainer

              SBorg 1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @Negalein last edited by

                @negalein
                da wurden wohl die states geändert - da kann das script nicht von allein drauf kommen, dass sich da was geändert hat

                @SBorg - ich denk, deine änderung müßte so passen - wenn du das array - 0 - element einliest, sollten die daten wieder wie vorher verarbeitet werden 👍

                Negalein SBorg 2 Replies Last reply Reply Quote 0
                • Negalein
                  Negalein Global Moderator @liv-in-sky last edited by

                  @liv-in-sky sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                  @SBorg - ich denk, deine änderung müßte so passen - wenn du das array - 0 - element einliest, sollten die daten wieder wie vorher verarbeitet werden

                  Jepp, passt wieder 🙂

                  1 Reply Last reply Reply Quote 0
                  • SBorg
                    SBorg Forum Testing Most Active @liv-in-sky last edited by

                    @liv-in-sky Mehr Zwangsweise, da der "neue" JSC mehr oder minder JSON nun als Array + Object vorschreibt. Von meiner Seite aus ändere ich nur sehr, sehr ungern etwas im laufenden Betrieb noch an States etc.

                    Da das hier im Thread wohl auch untergeht, magst du eine Änderung in deinem Skript hinzufügen, dass ab >=V1.0.0 Version xyz deines Skriptes zu nutzen ist 🙂 👍

                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @SBorg last edited by

                      @sborg

                      ich überlege gerade, ob man nicht einen teil einfügt, der überprüft, ob ein array oder pure json drinsteht - evtl umwandelt und dann weitermacht

                      muss das mal näher anschauen - dann bräuchten die user auch die alten dp nicht von hand konvertieren

                      SBorg 1 Reply Last reply Reply Quote 0
                      • SBorg
                        SBorg Forum Testing Most Active @Rene55 last edited by

                        @rene55 sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                        Danke für die Antwort. Probleme mit Influx/Grafana hatte ich eigentlich noch keine, oder sind mir nicht aufgefallen.

                        Siehste, verwechselt... 😉
                        ...wobei die Fehlermeldung nicht schlüssig ist. Wenn aber jetzt Ruhe ist und auch alles läuft --> dann "gut" so, nachvollziehen kann ich es eh nicht

                        1 Reply Last reply Reply Quote 0
                        • SBorg
                          SBorg Forum Testing Most Active @liv-in-sky last edited by

                          @liv-in-sky sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                          dann bräuchten die user auch die alten dp nicht von hand konvertieren

                          Doch, da ich die auch am 01. des Monats wieder einlese (sonst muss ich immer etliche Datenbankabfragen und Auswertungen fahren die unnötig sind, denn zu dem entsprechenden Monat [wie bspw. aktuell Oktober 2020] liegen die Daten ja vor) und da es ein Array sein soll, schreibe ich das nun auch als Array. Ich kam zwar auch auf den Gedanken, um aber da spätere Inkompatibilitäten (zB. Nutzung in der VIS, Bindings...) zu vermeiden, bin ich dafür nur ein Format zu haben. Schlimmstenfalls 13 DPs zu ändern geht ja auch fix.

                          liv-in-sky 2 Replies Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @SBorg last edited by liv-in-sky

                            @sborg

                            hat sich erledigt

                            1 Reply Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @SBorg last edited by

                              @sborg

                              script ist upgedated und läuft für jede dp-version

                              dem script ist es jetzt egal, was da drin steht - wenn es ein object ist, nimmt es das object - ist es ein string - wie früher - nimmt es einen string

                              https://forum.iobroker.net/topic/38286/vis-tabelle-für-wlan-wetterstation

                              Negalein 1 Reply Last reply Reply Quote 1
                              • SBorg
                                SBorg Forum Testing Most Active @Langer last edited by

                                @langer Ich nehme an durch den "bösen" root stimmen die Userrechte so nicht mehr.
                                Eigentlich sollte es so aussehen (bei mir läuft es unter User/Gruppe sborg )
                                Bild 1.png
                                wobei "wetterstation.js" uninteressant ist und bei der "sh" -rwxr--r-- völlig genügt, außer man arbeitet wirklich mit Gruppen.
                                Auch wenn es nerven mag, als User arbeiten und bei ev. nötigen Rechten halt ein "sudo" davor.

                                1 Reply Last reply Reply Quote 0
                                • Negalein
                                  Negalein Global Moderator @liv-in-sky last edited by

                                  @liv-in-sky sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                  script ist upgedated und läuft für jede dp-version

                                  habs getestet, wirft aber Fehler aus.

                                  12:12:36.575	error	javascript.0 (31206) script.js.Wetter.Wettertabelle: SyntaxError: Unexpected token ] in JSON at position 0
                                  12:12:36.575	error	javascript.0 (31206) at script.js.Wetter.Wettertabelle:56:83
                                  12:12:36.576	error	javascript.0 (31206) at dataStuff (script.js.Wetter.Wettertabelle:50:15)
                                  12:12:36.576	error	javascript.0 (31206) at main (script.js.Wetter.Wettertabelle:153:4)
                                  
                                  liv-in-sky 1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @Negalein last edited by

                                    @negalein

                                    ich habe 3 werte umgewandelt mit [..] und als object type "object" statt "string" im raw geändert

                                    Image 1.png

                                    läuft bei mir

                                    hast du das in object umwandeln gemacht ?

                                    Negalein SBorg 2 Replies Last reply Reply Quote 0
                                    • Negalein
                                      Negalein Global Moderator @liv-in-sky last edited by

                                      @liv-in-sky sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                      hast du das in object umwandeln gemacht ?

                                      Ja, schon gestern
                                      objects - ioBroker (6).png

                                      So schaut das Script jetzt aus.
                                      Eventuell siehst du einen copy/paste Fehler.

                                      // @liv-in-sky 4.10.2021 11:45
                                      //forum: https://forum.iobroker.net/topic/38286/vis-tabelle-f%C3%BCr-wlan-wetterstation
                                       
                                       
                                      const dataInputPath="0_userdata.0.Statistik.Wetter.Data";  //SEHR WICHTIG !!!!!!!!!
                                      const inhaltFarbe="black"
                                      const inhaltHintergrund="lightgray"
                                      const monatFarbe="black"
                                      const hintergrund="gray"
                                      const htmlFarbTableBorderColor="black";
                                      const abstandZelle=6;
                                      const htmlRahmenLinien="all"
                                      const htmlSchriftgroessehtmlSchriftart=""  //nicht verwendbar!
                                      const htmlFarbFelderschrift="red";         //nicht verwendbar!
                                      const htmlSchriftgroesse="14px";
                                      const htmlSchriftart="Ubuntu-Light"//"RobotoCondensed-Regular";       //oder z.b. "Helvetica"
                                      const weite="auto";                        //oder "500px"
                                      let myTable="table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\"2px\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+abstandZelle+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+";  font-size:"+htmlSchriftgroesse+
                                                           "; font-family:"+htmlSchriftart+";\"";
                                                            
                                      const varData={  Tiefstwert:       { einheit:"°C", name:"Minimum Temperatur"},
                                                     Hoechstwert:      { einheit:"°C", name:"Maximum Temperatur"},
                                                     Temp_Durchschnitt:{ einheit:"°C", name:"Durchschnittstemperatur"},
                                                     Max_Windboe:      { einheit:'km/h', name:"Max Windböe"},
                                                     Max_Regenmenge:   { einheit:'l/m2', name:"Max. Regen/Tag"},
                                                     Regenmenge_Monat: { einheit:'l/m2', name:"Regen"},
                                                     heisse_Tage:      { einheit:"", name:'Heiße Tage (über 30°C)'},
                                                     Sommertage:       { einheit:"", name:"Sommertage (über 25°C)"},
                                                     warme_Tage:       { einheit:"", name:"Warme Tage (über 20°C)"},
                                                     kalte_Tage:       { einheit:"", name:"Kalte Tage (Max. unter 10°C)"},
                                                     Frost_Tage:       { einheit:"", name:"Frosttage (Min. unter 0°C)"},
                                                     Eistage:          { einheit:"", name:"Eistage (Max. unter 0°C)"},
                                                     sehr_kalte_Tage:  { einheit:"", name:"Sehr kalte Tage (Min. unter -10°C)"}
                                      }  
                                       
                                      const monate =["JANUAR","FEBRUAR","MÄRZ","APRIL","MAI","JUNI","JULI","AUGUST","SEPTEMBER","OKTOBER","NOVEMBER","DEZEMBER"];
                                       
                                       
                                      //--------------------------nix mehr ändern ab hier--------------------------------------
                                      let myObj;
                                      let myArrAll=[]
                                      let myArrErstellt=[]
                                      let tableContent;
                                      let monWahlVIS;
                                      let lastThree;
                                      //----------------------------------------------------------------------------------------
                                      function dataStuff(){
                                      let myArrAll=[]
                                      let mySelector=dataInputPath+'.*.*'
                                      $(mySelector).each(function(id, i) {
                                      let ida=id.split("."); let lang=ida.length; let jahri=lang-2; let moni=lang-1;
                                      let obj2 = { jahr: ida[jahri]};
                                      let obj3 = { monat: ida[moni]};
                                      let formathelp= getState(id).val
                                      let helper;
                                      if (typeof(formathelp)=="object") {helper=getState(id).val[0];}  else{helper=JSON.parse(getState(id).val)}
                                       
                                      helper={ ...helper, ...obj2, ...obj3}
                                      myArrAll.push(JSON.stringify(helper))
                                      });
                                      //log(myArrAll)
                                      tableContent = ""  
                                      myObj=JSON.parse("["+myArrAll.toString()+"]")
                                       
                                      if (lastThree==0) {
                                      //KOPFZEILE
                                      let choseMonth=monate[monWahlVIS-1]
                                      let choseMonthArr=choseMonth.split('')
                                      let test=""
                                      for (let i=0;i<choseMonthArr.length;i++){
                                        // log(choseMonthArr[i])
                                         test=test+choseMonthArr[i]+`
                                         `    
                                      }
                                       
                                      //log(test)
                                      //tableContent+='<td  class=\"test-klein\"  rowspan=\"14\"\">'+choseMonth+'</td><td>Wetterwerte</td>'
                                      tableContent+='<td class=\"myWetterStation\" width=\"25px\"  style=\"color:'+monatFarbe+';font-size:26px; background-color:'+hintergrund+' ; vertical-align:middle; text-align:center \"   rowspan=\"14\"\">'+test+'</td><td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\>Wetterwerte</td>'
                                      for (let i=0;i<myObj.length;i++) {
                                         if(parseInt(myObj[i].monat)==monWahlVIS){
                                      tableContent += '<td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\ align=center>'  + myObj[i].jahr+'</td>'}
                                      }; tableContent="<tr style=\"font-weight\:bold\">"+tableContent+"</tr>"
                                      //RESTZEILEN
                                      for(var index in varData){
                                         tableContent+='<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\">'+varData[index].name+'</td>'
                                         for (let i=0;i<myObj.length;i++) {
                                            if(myObj[i].monat==monWahlVIS){
                                              tableContent += '<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\" align=right>' + myObj[i][index] + ' '+ varData[index].einheit+'</td>'}
                                                                          }; tableContent="<tr>"+tableContent+"</tr>"
                                       
                                      }
                                      } //lastThree
                                      else {
                                      //log(myObj[0].monat)
                                          myObj.sort(function (alpha, beta) {
                                                   if (parseInt(alpha.monat) > parseInt(beta.monat))
                                                       return 1;
                                                    if (parseInt(beta.monat) > parseInt(alpha.monat))
                                                       return -1;
                                                    return 0;});
                                                //    log(myObj[0].monat)
                                       
                                      //KOPFZEILE LASTTHREE
                                       
                                      let choseJahr=lastThree.toString()//formatDate(getDateObject((new Date().getTime())), "JJJJ")//monate[monWahlVIS-1]
                                      let choseMonthArr=choseJahr.split('')
                                      let test=""
                                      for (let i=0;i<choseMonthArr.length;i++){
                                        // log(choseMonthArr[i])
                                         test=test+choseMonthArr[i]+`
                                         `    
                                      }
                                       
                                      //log(test)
                                      //tableContent+='<td  class=\"test-klein\"  rowspan=\"14\"\">'+choseMonth+'</td><td>Wetterwerte</td>'
                                      tableContent+='<td class=\"myWetterStation\" width=\"25px\"  style=\"color:'+monatFarbe+';font-size:26px; background-color:'+hintergrund+' ; vertical-align:middle; text-align:center \"   rowspan=\"14\"\">'+test+'</td><td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\>Wetterwerte</td>'
                                       
                                      for (let i=0;i<myObj.length;i++) {
                                         
                                         if( parseInt(myObj[i].jahr)==parseInt(choseJahr) && (parseInt(myObj[i].monat)==parseInt(monWahlVIS) || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-1 || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-2)){
                                      tableContent += '<td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\ align=center>'  + monate[parseInt(myObj[i].monat)-1]+'</td>';}
                                      }; tableContent="<tr style=\"font-weight\:bold\">"+tableContent+"</tr>"
                                      //RESTZEILEN
                                      for(var index in varData){
                                         tableContent+='<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\">'+varData[index].name+'</td>'
                                         for (let i=0;i<myObj.length;i++) {
                                          if( parseInt(myObj[i].jahr)==parseInt(choseJahr) && (parseInt(myObj[i].monat)==parseInt(monWahlVIS) || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-1 || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-2)){
                                              tableContent += '<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\" align=right>' + myObj[i][index] + ' '+ varData[index].einheit+'</td>'}
                                                                          }; tableContent="<tr>"+tableContent+"</tr>"
                                       
                                      }
                                       
                                       
                                      }
                                       
                                      tableContent = '<'+myTable+' ><tbody>'+tableContent+'</tbody></table >'
                                      //log(tableContent)
                                       
                                      setState("javascript." + instance + ".Wetterstation.MonthlyDaten",tableContent)
                                      }
                                       
                                      //--------------------------------------------------------------------------------------------------
                                      async function main() {
                                         if (!(await existsStateAsync("javascript." + instance + ".Wetterstation.MonthlyDaten"))) {
                                             await createStateAsync("Wetterstation.MonthlyDaten", "leer", {type: "string", name: "MonthlyDaten", role: "value", read: true, write: true, } ); }
                                         if (!(await existsStateAsync("javascript." + instance + ".Wetterstation.MonatAuswahl"))) {
                                             await createStateAsync("Wetterstation.MonatAuswahl", 10, {type: "number", name: "MonatAuswahl", role: "value", read: true, write: true, } ); } 
                                         if (!(await existsStateAsync("javascript." + instance + ".Wetterstation.AuswahlJahr"))) {
                                             await createStateAsync("Wetterstation.AuswahlJahr", 0, {type: "number", name: "AuswahlJahr", role: "value", read: true, write: true, } ); } 
                                         lastThree = (await getStateAsync("javascript." + instance + ".Wetterstation.AuswahlJahr")).val //? lastThree=true : lastThree=false;  
                                              
                                         monWahlVIS=((await getStateAsync("javascript." + instance + ".Wetterstation.MonatAuswahl")).val ) 
                                         dataStuff();
                                       
                                      }
                                       
                                      //-----------------------------------------------------------------------------------------------------
                                      main()
                                       
                                       
                                       
                                      on({id: "javascript." + instance + ".Wetterstation.MonatAuswahl", change: "any"}, async function (obj) {
                                      main()
                                       
                                      });
                                       
                                      on({id: "javascript." + instance + ".Wetterstation.AuswahlJahr", change: "any"}, async function (obj) {
                                      main()
                                       
                                      });
                                       
                                      schedule('  */30 * * * *', function() { 
                                         setState("javascript." + instance + ".Wetterstation.MonatAuswahl", parseInt(formatDate(getDateObject((new Date().getTime())), "MM"))) ;
                                         setStateDelayed("javascript." + instance + ".Wetterstation.AuswahlJahr", parseInt(formatDate(getDateObject((new Date().getTime())), "JJJJ")),10000) ;
                                      });
                                      
                                      1 Reply Last reply Reply Quote 0
                                      • SBorg
                                        SBorg Forum Testing Most Active @liv-in-sky last edited by

                                        @liv-in-sky sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                        läuft bei mir

                                        Sorry @Negalein , lüppt bei mir auch.
                                        Hast du ev. aus Versehen bei einem der Datenpunkte ein [ oder ] zu wenig/viel?

                                        Negalein 1 Reply Last reply Reply Quote 0
                                        • Negalein
                                          Negalein Global Moderator @SBorg last edited by Negalein

                                          @liv-in-sky @sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                          Hast du ev. aus Versehen bei einem der Datenpunkte ein [ oder ] zu wenig/viel?

                                          Haaaa, tatsächlich.
                                          Hatte 1x in der 1. Zeile [ mit ] vertauscht.

                                          Kleiner Fehler-----große Auswirkung

                                          PS: schon Bier gekauft 😉

                                          liv-in-sky 1 Reply Last reply Reply Quote 0
                                          • liv-in-sky
                                            liv-in-sky @Negalein last edited by

                                            @negalein

                                            läuft also - dann is ja gut

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            903
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            143
                                            5478
                                            3303033
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo