Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script zur Überprüfung ob eine neue Firmware für die CCU verfügbar ist

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Script zur Überprüfung ob eine neue Firmware für die CCU verfügbar ist

    This topic has been deleted. Only users with topic management privileges can see it.
    • smartboart
      smartboart last edited by smartboart

      Edit...ok Schwachsinn was ich schreibe....Der state wird nur bei unterschied gesetzt..
      ich ändere das ab, sodass ich es immer angezeigt bekomme...Möchte das für vis haben...
      habe jetzt bei den ganzen Elsen das dazu gepackt.. somit ist die Version jetzt auch angezeigt..
      setState(id_Version_Internet,Version[1]);

      Nicht wundern hab noch nen state dazu gepackt um ne Anzeige in Vis bei Update Verfügbarkeit aufpoppen zu lassen...

      Der State wird nicht mit der Verfügbaren Online Version gefüllt...Oder wird die Version nur bei einer höheren bzw. bei verfügbaren Update dort angezeigt?

      Unbenannt1.PNG

      Unbenannt.PNG

      /**************************
      * Prüft ob im Internet eine neue Firmwarer verfügbar ist
      * 
      * 19.03.19 V1.00    Erste Version
      * 20.03.19 V1.01    Logging optimiert
      * 01.04.19 V1.02    Firmware kann auch für Rasperrymatic überwacht werden
      *                   Umstellung von var auf var und let (by Dutchman)
      **************************/
      createState('javascript.0.Status.Homematic.CCU_Firmware.Update',{ def: false,  type: 'boolean', name: 'CCU3 Firmware Update verfügbar'});
      createState('javascript.0.Status.Homematic.CCU_Firmware.Version',{ read: true, write: true, desc: 'Firmware Version online', type: 'string', name: 'CCU3 Firmware Update Version'});
      
      var logging = true; 
      var debugging = true; 
      var debugging_response = false;       //nur im Fehlerfall auf true. Hiermit wird die Antwort der Internetadresse protokolliert
      var CCU_Version = 4;                  //Hier eine Zahl eintragen: 2 = CCU2 // 3 = CCU3 // 4 = Rasperrymatic
      //Datenpunkt auswählen wo die installierte Version ersichtlich ist (aus Homematic.Rega Adapter)
      const id_Version_installiert = "hm-rega.0.PEQ0624923.0.FIRMWARE_VERSION";
      //Datenpunkt muss manuell angelegt werden. Kann irgendwo angelegt werden. Anschließend hier ersetzen
      const id_Version_Internet = 'javascript.0.Status.Homematic.CCU_Firmware.Version';
      const id_Update_Internet = 'javascript.0.Status.Homematic.CCU_Firmware.Update';
      
      
      var observation = true;         //Dauerhafte Überwachung der Firmware (true = aktiv // false =inaktiv)
      var onetime = true;             //Prüft beim Scriptstart auf aktuelle Firmware
      
      //Prio für Pushover
      var prio_Firmware = 0;
      
      
      //Variablen für Pushover
      var sendpush = false;            //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
      var pushover_Instanz0 =  'pushover.0';     // Pushover instance für Pio = 0
      var pushover_Instanz1 =  'pushover.1';     // Pushover instance für Pio = 1
      var pushover_Instanz2 =  'pushover.2';     // Pushover instance für Pio = 2
      var pushover_Instanz3 =  'pushover.3';     // Pushover instance für Pio = -1 oder -2
      let _prio;
      let _titel;
      let _message;
      var _device = 'TPhone';         //Welches Gerät soll die Nachricht bekommen
      //var _device = 'All'; 
      
      //Variablen für Telegram
      var sendtelegram = true;            //true = verschickt per Telegram Nachrchten // false = Telegram wird nicht benutzt
      var user_telegram = 'Smartboart';             //User der die Nachricht bekommen soll
      
      //Variable zum verschicken der Servicemeldungen per eMail
      var sendmail = true;            //true = verschickt per email Nachrchten // false = email wird nicht benutzt
      
      
      // ab hier keine Änderung
      
      let _message_tmp;
      var request = require('request');
      
      function send_pushover_V4 (_device, _message, _titel, _prio) {
              if (_prio === 0){let pushover_Instanz =  pushover_Instanz0}
              else if (_prio == 1){pushover_Instanz =  pushover_Instanz1}
              else if (_prio == 2){pushover_Instanz =  pushover_Instanz2}
              else {pushover_Instanz =  pushover_Instanz3}
              sendTo(pushover_Instanz, { 
              device: _device,
              message: _message, 
              title: _titel, 
              priority: _prio,
              retry: 60,
              expire: 600,
              html: 1
          }); 
      }
      
      function send_telegram (_message, user_telegram) {
          sendTo('telegram.0', { 
              text: _message,
              user: user_telegram,
              parse_mode: 'HTML'
          }); 
      }
      
      function send_mail (_message) {
          sendTo("email", {
              //from:    "iobroker@mydomain.com",
              //to:      "aabbcc@gmail.com",
              subject: "Servicemeldung",
              text:    _message
          });
      }
      
      function func_Version(){
          var Version_Internet = getState(id_Version_Internet).val;
          var ccu2 = 'http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345';
          var ccu3 = 'http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU3&serial=12345';
          var Raspi = 'https://gitcdn.xyz/repo/jens-maus/RaspberryMatic/master/release/LATEST-VERSION.js?_version_=CURRENT_VERSION';
          let ccu;
          if(CCU_Version == 3){ccu = ccu3;}
          else if(CCU_Version == 4){ccu = Raspi;}
          else {ccu = ccu2;}
          url = ccu;
      
          request({url : url},
      
              function (error, response, body) {
                  var Version_installiert = (getState(id_Version_installiert).val).trim();
                  var Version = body.split("'");
                  if(error){
                      log('error: ' + error);
                  } else {
                      if(Version_Internet === ''){
                          if(logging){
                              log('ausgewähltes Objekt leer. Firmware wird erstmalig gesetzt.');
                          }
                          setState(id_Version_Internet,Version[1]);
                      }
                      
                      if(Version_installiert == Version[1]){
                          setState(id_Update_Internet,false);
                          if(logging){
                              log('Installierte Firmware '+Version_installiert  +' der CCU ist aktuell');
                          }
                      }
                      else{
                          setState(id_Update_Internet,true);
                          if(logging){
                              log('Installierte Firmware '+Version_installiert  +' der CCU ist nicht aktuell. Aktuell verfügbare Version: '+Version[1]);
                          }
                          
                          if(Version_Internet == Version[1]){
                              if(debugging){
                                  log('[DEBUG] ' +'Version Internet hat sich nicht verändert');
                              }
                          } else {
                              if(debugging){
                                  log('[DEBUG] ' +'Installierte Firmware der CCU ist nicht aktuell.');
                              }
                              setState(id_Version_Internet,Version[1]);
                               _message_tmp = 'Installierte Firmware der CCU ist nicht aktuell. Installiert: ' +Version_installiert +' --- Verfügbare Version: '+Version[1];
                              
                               //Push verschicken
                              if(sendpush){
                                  _prio = prio_Firmware;
                                  _titel = 'CCU-Firmware';
                                  _message = _message_tmp;
                                  send_pushover_V4(_device, _message, _titel, _prio);
                              }
                              if(sendtelegram){
                                  _message = _message_tmp;
                                  send_telegram(_message, user_telegram);
                              }
                              if(sendmail){
                                  _message = _message_tmp;
                                  send_mail(_message);
                              }
                          }         
                      }
              
                      if(debugging_response){
                          log('body: ' + body);
                          log('Länge ' + Version.length + ' --- Version: ' + Version[1]);
                          log('response: ' + JSON.stringify(response));
                      }
                  }
              }
          );
      }
      
      if(observation){
          //Nachts einmalig ausführen 00:30 Schaltzeiten berechnen
          schedule("54 05 * * *", func_Version);
      }
      
      if(onetime){
          //beim Starten
          func_Version();
      }
      
      cash 1 Reply Last reply Reply Quote 0
      • cash
        cash Most Active @smartboart last edited by

        @smartboart Ok Du hast das Script verändert. Auch wenn das eigentlich keine Rolle spielt.

        Bei Dir hat die Abfrage:

        if(Version_Internet === '')

        Nicht funktioniert? Die Frage wäre warum? Wenn man das Objekt manuell anlegt funktioniert es. Evtl liegt es daran das Du es per CreatState anlegst? Wobei das Feld derzeit bei Dir irrelevant ist, da Du die aktuelle Version installiert hast. Das Feld wird nur genutzt wenn Du nicht die aktuelle Version installiert hast damit er weiß das er Dich bereits über eine neue Firmware informiert hat...

        Spätestens in einen Monat (beim Raspi kommt doch jeden Monat eine neue Version) wird das Feld beschrieben.

        smartboart 1 Reply Last reply Reply Quote 0
        • smartboart
          smartboart @cash last edited by

          @cash ja der part hat nicht funktioniert...

                     } else {
          
                         if(Version_Internet === ''){
          
                             if(logging){
          
                                 log('ausgewähltes Objekt leer. Firmware wird erstmalig gesetzt.');
          
                             }
          
                             setState(id_Version_Internet,Version[1]);
          
                         }
          
          cash 1 Reply Last reply Reply Quote 0
          • cash
            cash Most Active @smartboart last edited by

            @smartboart die Frage wäre warum? Ich würde ja fast vermuten das es daran liegt das es nicht manuell angelegt wurde. Wie schon geschrieben ist es aber auch nicht schlimm. Spätestens in einen Monat wird das Feld gesetzt....

            smartboart 1 Reply Last reply Reply Quote 0
            • smartboart
              smartboart @cash last edited by

              @cash ja danke...habe den state einfach manuell beschrieben...

              1 Reply Last reply Reply Quote 0
              • cash
                cash Most Active last edited by

                Neuer Tag neue Version. Einige kleine Fehler habe ich behoben aber das wichtigste: Nun kann das Script auch eingesetzt werden wenn man piVCCU nutzt. Dabei ist es egal welche Version man nutzt. Es ist sogar die Abfrage auf testing oder latest möglich.

                Alex (alias deimos) was so nett und hat ein paar URLS gebastelt.

                sigi234 Röstkartoffel 2 Replies Last reply Reply Quote 0
                • sigi234
                  sigi234 Forum Testing Most Active @cash last edited by

                  @cash
                  Cool, übrigens neue CCU2 Firmware (2.45.6) ist Heute gekommen.
                  Ich wurde auch per Mail von deinen Skript einwandfrei verständigt........

                  cash 1 Reply Last reply Reply Quote 0
                  • cash
                    cash Most Active @sigi234 last edited by

                    @sigi234 so soll es sein. Freut mich das es läuft.

                    1 Reply Last reply Reply Quote 0
                    • iomountain
                      iomountain @cash last edited by

                      @cash hatte gestern die erste Benachrichtigung wegen Update. Super Sache, danke dafür.
                      Einen Verbesserungsvorschlag noch:
                      Im Script ein Hinweiß auf github Pruefung-CCU-Firmware
                      Sollte man in ein paar Jahren ein Update brauchen weiß man gleich wo man nachsehen muss.
                      Viele Grüße

                      1 Reply Last reply Reply Quote 0
                      • Röstkartoffel
                        Röstkartoffel @cash last edited by

                        @cash
                        Ich habe gestern dein Script das erste mal installiert und es funktioniert super.
                        Danke.
                        Nur erschrocken habe ich mich nach dem Start, als die Telegram-Nachricht ein Update für die CCU meldete.
                        In den Schrank zur CCU geschaut --> kein Blinken der Led.
                        In die Homematic Weboberfläche geschaut --> kein Update angezeigt.
                        Auf eq3 Homepage geschaut, Update verfügbar, also doch alles gut, warte ich dann mal die Nacht ab.
                        Heute morgen blinkte die CCU auch schön vor sich hin und die GUI zeigte auch ein Update an.

                        1 Reply Last reply Reply Quote 0
                        • dslraser
                          dslraser Forum Testing Most Active last edited by

                          hat funktioniert 👍

                          Screenshot_20190505-093053_Telegram.jpg

                          1 Reply Last reply Reply Quote 0
                          • cash
                            cash Most Active last edited by

                            Ich habe auf GitHub ein Update vorgenommen, der hoffentlich Falschmeldungen verhindert. Ich hatte heute eine Meldung, da die Abfrage der verfügbaren Version nicht funktioniert hat. Entweder hatte ich kein Internet oder die Webseite war nicht erreichbar. Beides sollte nun nur noch ein log bringen.

                            Den Link zur Github hatte ich auch aufgenommen.

                            1 Reply Last reply Reply Quote 1
                            • M
                              Michi68 last edited by

                              Hallo,
                              erst mal Danke für die Zurverfügungstellung des Scripts.
                              Ich muss aber mal was Fragen, die Aktuelle Firmware Version holt sich das Script und schreib diese dann auch in den von mir erstellten Datenpunkt. Soweit so gut.
                              Nur wie bekomme ich die Aktuelle Installierte Version angezeigt in hm-rega.0? bei mir steht da nix von
                              und wenn ich das richtig gesehen habe sollte dort ein Eintrag sein, der FIRMWARE_VERSION heißt.
                              Den habe ich nicht, bei mir stehen nur die drin.

                              hmrega0.png

                              Vielleicht kann mir hier einer einen Tipp geben woran es liegt, wäre schön ich hab nichts gefunden.
                              Gruß Michael

                              1 Reply Last reply Reply Quote 0
                              • C
                                Conquest last edited by

                                Also bei mir steht die Firmware Version im Rega-Adapter. Welche Version hast du?

                                screenshot-192.168.178.46-8081-2019.05.22-18-46-20.png

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Michi68 last edited by

                                  HomeMatic ccu2 Firmware: 2.45.7 ist auch die Aktuelle

                                  1 Reply Last reply Reply Quote 0
                                  • cash
                                    cash Most Active last edited by

                                    @Michi68 bitte mal einen größen Screenshot machen. Unter „info“ ist das Feld nicht...

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Michi68 last edited by

                                      OK aber mehr siehst du dann auch nicht

                                      hmrega02.png

                                      da steht nicht mehr drin, oder muss ich bei der ccu2 ein addon installieren von dem ich nichts weiß

                                      Gruß Michael

                                      sigi234 1 Reply Last reply Reply Quote 0
                                      • sigi234
                                        sigi234 Forum Testing Most Active @Michi68 last edited by sigi234

                                        @Michi68

                                        Experteneinstellungen aktivieren und Rega0 neu starten, dann sollte deine CCU2 auftauchen....

                                        Screenshot (3256)_LI.jpg

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          Michi68 last edited by

                                          @sigi234 du meinst den Expertenmodus in iobroker oder?
                                          ist überall an ich habe den Adapter auch schon neu installiert hat aber auch nicht gebracht
                                          hm-rega.0 ist die 2.3.3
                                          hm-rpc.0 ist die 1.9.11

                                          sigi234 1 Reply Last reply Reply Quote 0
                                          • sigi234
                                            sigi234 Forum Testing Most Active @Michi68 last edited by

                                            @Michi68 sagte in Script zur Überprüfung ob eine neue Firmware für die CCU verfügbar ist:

                                            du meinst den Expertenmodus in iobroker oder?

                                            Ja, Rega.0 neu starten, dann iobroker stop und neu starten. Browser Cache komplett leeren, iobroker öffnen, Objekte aktualisieren.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            21
                                            95
                                            9089
                                            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