Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. IoBroker mit Warema WMS Web Control

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    IoBroker mit Warema WMS Web Control

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

      Hallo zusammen,

      das hier ist ein wirklich interessanter Treat und ich habe mich extra deswegen hier angemeldet 😄 😄

      Wirklich eine sehr gute Arbeit von euch; etwas vergleichbares zu dem Warema-Protokoll ist sonst nirgendwo zu finden – vielen Dank.

      Ein paar Fragen habe ich aber noch. Vielleicht könnt ihr helfen:

      1. Was genau ist gemeint mit „Netzwerkschlüssel in umgekehrter Reihenfolge“?

      123456ABCD…. wird zu ….CDAB563412 oder

      123456ABCD…. wird zu ….DCBA654321

      1. Gibt es einen Befehl für den USB-Stick, mit dem die vom Handsender gesendeten Daten mitgelesen werden können (z.B. an die Markise)?

      2. Wir bekommt man die SNR von einem Aktor (z.B. Markise) ohne Sensor?

      3. Mit welchem Befehl wird eine Markise ausgefahren oder eingefahren?

      Edit:

      zu 3 -> mit dem Scan-Befehl {R04FFFFFF7020PPPP02} (wurde schon beschrieben)

      zu 4 -> mit dem Fahr-Befehl {R06FFFFFF70700pp0FFFFFF00} (pp für Position in %)

      LG

      rainer

      1 Reply Last reply Reply Quote 0
      • R
        radiorichter last edited by

        Hallo Rainer,

        ja es ist leider so, dass man bezüglich Warema leider gar nichts findet…

        Leider kann ich dir noch nicht weiterhelfen... Umzug ins Haus steht im August / September an... Ich bin auch gespannt ob ich das Skript zum laufen bekomme 😉

        läufts bei dir nun schon? 😉

        1 Reply Last reply Reply Quote 0
        • R
          rainer300 last edited by

          Hi radiorichter,

          nein, ich habe das Script nicht zum Laufen bekommen.

          Ich bin jetzt aber auch auf openhab umgestiegen und versuche ein Bindung für den Stick zu entwickeln. 😉

          1 Reply Last reply Reply Quote 0
          • E
            Eberhart last edited by

            Eventuell können wir uns da zusammentun? Unter iobroker läuft das Script einwandfrei, aber ich nutze auch nur noch OpenHab.

            1 Reply Last reply Reply Quote 0
            • R
              rainer300 last edited by

              Mein Bindung für Openhab funktioniert schon ganz gut, allerdings habe ich nur eine Markise, so dass ich nicht alle Funktionen programeren und testen kann.

              Auch finde ich kaum Dokumentation für die Bindingprogrammierung in openhab und muss vieles googeln <emoji seq="1f614">😔</emoji>

              Die Vorarbeiten hier in diesem Forum für die Warema-Protokolle sind aber super - vielen Dank dafür.

              1 Reply Last reply Reply Quote 0
              • E
                Eberhart last edited by

                Ich hab dir mal ne Nachricht geschrieben. Bitte antworte mal Rainer

                1 Reply Last reply Reply Quote 0
                • L
                  Lupin III. last edited by

                  Ich weiß nicht, ob hier noch jemand weiter daran arbeitet, aber nachdem dieser Thread der detailierteste zum Warema WMS ist, den Google ausspuckt, schreibe ich noch noch dazu, was ich herausgefunden habe.

                  Ich habe zwei WMS Netzwerke (zwei Wohnungen im selben Haus mit jeweils eigener Fernsteuerung) mit in Summe 16 Raffstore-Zwischensteckern.

                  1. der Stick speichert einmal gesetzte Schlüssel auch über Abstecken hinweg für mehrere Netzwerke. Ich kann mit meinem Stick mit beiden Netzwerken gleichzeitig "reden" ohne den Schlüssel neu setzen zu müssen.

                  2. die meisten Befehle (inkl. Fahrbefehle) können ausgeführt werden, ohne die PANID zu setzen. Ein {M%17FFFF} ist genug. Meine Annahme, dass die PANID nur für das Empfangen von Broadcast-Nachrichten (z. B. von Sensoren) wichtig ist.

                  3. ich habe den Stromverbrauch des Sticks gemessen. 10mA direkt nach dem anstecken und 50mA sobald ein M-Befehl ausgeführt wurde. Ich nehme an, dies aktiviert das interne Funk-Modul. Ein "Abschalten" habe ich nicht geschafft.

                  4. mit {R06xxxxxx5040} kann man einen Zwischenstecker "Pingen". Antwort {rxxxxxx50ACAF7E}. Die letzten zwei Bytes ändern sich immer.

                  5. mit {R04FFFFFF5058} (oder {R04xxxxxx5058} für einen einzelnen Zwischenstecker) kann man nach den von den Zwischensteckern verwendeten Schlüsseln fragen. Antwort {rxxxxxx5059kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk}. Bei mir antworten alle erreichbaren Zwischenstecker aus beiden Netzwerken gleichzeitig auf diese Anfrage. Ich nehme an, dass man den Schlüssel dazu erst einmal wissen muss, um überhaupt mit den Geräten reden zu können, sonst wären die Schlüssel ja vollkommen umsonst. Testen kann ich das nicht mehr, da der Stick die Schlüssel wie gesagt anscheinend speichert.

                  6. Es ist ein Unterschied zwischen {M%…} und {M#...}. Bei {M#...} bekomme ich auf die obige Key-Abfrage {R04FFFFFF5058} nur eine einzige Antwort zurück, wobei der antwortende Zwischenstecker wechselt (der, der am schnellsten reagiert?). Bei {M%...} kommt eine ganze Liste von Antworten zurück.

                  Die meisten dieser Dinge habe ich in den Dateien des WMS-Studio pro "gefunden". Ein paar weitere Dinge, von denen ich nicht wirklich weiß, was sie genau tun (obwohl man vom Namen her natürlich raten kann).

                  M% nennt sich dort Tunnel-Mode, M# Unicast-Mode.

                  Die 2 Ziffern in einem "Rxx"-Befehl sind einerseits für den Schlüssel (0=key0, 1=key1, 2=plain) und Tranmission-Mode (0="OneHopBC", 1="P2P", 4="WideBC", 6="WideP2P", 8="NWK2Child"). Viele Befehle funktionieren z. B. mit "R01", "R04" "R06" oder "R08" am Anfang.

                  Es gibt in den Dateien noch weitere Listen von IDs (z. B. für den Produkt-Typ, Geräte-Typ, Sensor-Wert). Da ich außer Raffstore-Zwischenstecker aber nichts habe, kann ich damit nicht viel anfangen.

                  PS: hat jemand rausgefunden, ob man den Stick als Gerät in die Fernbedienung einlernen kann, sodass man mit der Fernbedienung Befehle an den Stick schicken kann?

                  1 Reply Last reply Reply Quote 0
                  • P
                    Pman last edited by

                    Hallo Lupin.

                    Super Erkenntnisse, vielleicht kann ich mit einem der anderen Transmission-Modes die Zuverlässigkeit erhöhen. Bei mir reagiert nämlich ein bestimmter Zwischenstecker manchmal nicht. Mit der Fernbedienung passiert das nicht.

                    > PS: hat jemand rausgefunden, ob man den Stick als Gerät in die Fernbedienung einlernen kann, sodass man mit der Fernbedienung Befehle an den Stick schicken kann?
                    Das habe ich noch nicht versucht. Hier ist ja schon beschrieben, wie man auf die Anlernbefehle der FB reagieren muss, um sich z.B. als Raffstore auszugeben:

                    viewtopic.php?f=8&t=7755#p89491

                    Wenn man dem Prozess weiter folgt müsste der Stick danach doch in der FB als entsprechendes Gerät bekannt sein?

                    1 Reply Last reply Reply Quote 0
                    • L
                      Lupin III. last edited by

                      @Pman:

                      Das habe ich noch nicht versucht. Hier ist ja schon beschrieben, wie man auf die Anlernbefehle der FB reagieren muss, um sich z.B. als Raffstore auszugeben:

                      viewtopic.php?f=8&t=7755#p89491

                      Wenn man dem Prozess weiter folgt müsste der Stick danach doch in der FB als entsprechendes Gerät bekannt sein? `

                      Das habe ich probiert, aber der Stick bleibt immer rot und lässt sich nicht als ein Empfänger einem "Kanal" zuweisen ("Kanal" in der Fernbedienung und nicht Funkkanal). Vielleicht mache ich auch etwas zu langsam und müsste die Antworten mit einem Programm machen und nicht durch C'n'P in das serielle Terminal.

                      1 Reply Last reply Reply Quote 0
                      • L
                        Lupin III. last edited by

                        Noch was neues (diesmal mit einem Serialportmonitor rausgefischt):

                        Diese zwei Befehle versetzen den Stick in einen Kanal-Scanner-Modus:

                        {M<17}{Yon}

                        Danach kommen laufend solche Zeilen:

                        {yC11:30}{yC12:3E}{yC13:38}{yC14:2B}{yC15:62}{yC16:23}{yC17:20}{yC18:2C}{yC19:41}{yC20:1C}{yC21:19}{yC22:2B}{yC23:65}{yC24:19}{yC25:17}{yC26:15}

                        Sendet auf den Frequenzen der Kanäle etwas anderes (z. B. WLAN), sind die Zahlen hinter dem Doppelpunkt höher. Das könnte bei der Fehlersuche helfen, wenn jemand Probleme mit dem Empfang hat.

                        Stoppen kann man die Ausgabe einfach mit {Yoff} . Mit {M#17FFFF} (bzw. M% und/oder PANID) kommt man wieder in den normalen Modus.

                        Außerdem habe ich meinen Reset gefunden: {Ureset} lässt den Stick neu starten. Er meldet sich mit der Versionsnummer. Auch das Funkmodul wird anscheinend wieder abgeschalten, denn der Stromverbrauch geht wieder auf die 10mA wie direkt nach dem Anstecken zurück.

                        Die Zeile {R 11 xxxxxx 8020 09 0400 01 01} löscht übrigens einen Teilnehmer aus dem Netz. Eine Suche mit der Fernbedienung lässt ihn wieder rot auftauchen. Das Gegenstück (Einlernen), habe ich noch nicht reproduzieren können, da hier einiges mehr los ist. Für die, die's interessiert ist hier der Ablauf für einen Zwischenstecker, den ich zum Experimentieren aus meinem normalen Netzwerk genommen habe (der Key ist der, den WMS Studio pro erzeugt hat, nicht der von meinem Netzwerk):

                        {M# 17 FFFF}
                        {a}
                        {R 01 xxxxxx 5060 FFFF011100}
                        {a}
                        {rxxxxxx50AC01B5}
                        {M# 17 FFFF}
                        {a}
                        {R 01 xxxxxx 5018 708640990B5FFB32FD7B4A20CE70FDB3BFD00011}
                        {a}
                        {rxxxxxx50ACC65F}
                        {M# 17 7086}
                        {a}
                        {K 4 01 D0BFB3FD70CE204A7BFD32FB5F0B9940}
                        {a}
                        {R 11 xxxxxx 8010 51 1800 20}
                        {a}
                        {rxxxxxx801151180020333730303131324220202000312E303430200020313032462020202020202000}
                        {R 11 xxxxxx 8020 08 0700 43 3900012D00010164280214C8A5FFFF0034FFFFFF2E000101070009001000100096960034FFFFC8CAFFFFFF32000101010A0034FFFF01FF3000010118010A0034FFFFFF}
                        {a}
                        {rxxxxxx802108070043}
                        {R 11 xxxxxx 8020 08 4A00 43 310001005600000034FFFFFF2F0001847C0A0AC8A5FFFF0034FFFFFF3A00FF4000FF3600010600FFFFFFFF011600FFFFFFFF00FFFFFFFFFFFF02FFFFFFFFFFFF020600}
                        {a}
                        {rxxxxxx8021084A0043}
                        {R 11 xxxxxx 8020 08 8D00 43 FFFFFFFF011600FFFFFFFF00FFFFFFFFFFFF02FFFFFFFFFFFF020600FFFFFFFF011600FFFFFFFF00FFFFFFFFFFFF02FFFFFFFFFFFF020600FFFFFFFF011600FFFFFFFF}
                        {a}
                        {rxxxxxx8021088D0043}
                        {R 11 xxxxxx 8020 08 D000 43 00FFFFFFFFFFFF02FFFFFFFFFFFF020600FFFFFFFF011600FFFFFFFF00FFFFFFFFFFFF02FFFFFFFFFFFF020600FFFFFFFF011600FFFFFFFF00FFFFFFFFFFFF02FFFFFF}
                        {a}
                        {rxxxxxx802108D00043}
                        {R 11 xxxxxx 8020 08 1301 43 FFFFFF020600FFFFFFFF011600FFFFFFFF00FFFFFFFFFFFF02FFFFFFFFFFFF0238C8A5FFFF0033FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
                        {a}
                        {rxxxxxx802108130143}
                        {R 11 xxxxxx 8020 08 5601 43 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
                        {a}
                        {rxxxxxx802108560143}
                        {R 11 xxxxxx 8020 08 9901 43 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E0101010101010000010101010101385A5AFFFFFFFF}
                        {a}
                        {rxxxxxx802108990143}
                        {R 11 xxxxxx 8020 08 DC01 1B 03001034CA0600FFFF190505050505050505050541FFFFFFFFFFFF}
                        {a}
                        {rxxxxxx802108DC011B}
                        {R 11 xxxxxx 8020 08 0000 03 010103}
                        {a}
                        {rxxxxxx802108000003}
                        {R 11 xxxxxx 8010 08 0000 01}
                        {a}
                        {rxxxxxx80110800000100}
                        {R 11 xxxxxx 8020 23 0000 20 FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000000000000000}
                        {a}
                        {rxxxxxx802123000020}
                        {R 11 xxxxxx 8020 24 0000 14 FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00}
                        {a}
                        {rxxxxxx802124000014}
                        {R 11 xxxxxx 8020 09 0000 01 01}
                        {a}
                        {rxxxxxx802109000001}
                        {R 11 xxxxxx 8020 09 0300 01 01}
                        {a}
                        {rxxxxxx802109030001}
                        

                        Ich habe ein paar der Befehle "nachgespielt", der Zwischenstecker wurde aber nie als im Netzwerk erkannt. Könnte sein, dass auch hier möglicherweise etwas zeitabhängig ist. Interessant ist es trotzdem, weil das heißt, dass man eigentlich mit USB-Stick und Zwischenstecker auskommt und keine Fernbedienung braucht.

                        Die 8020 Befehle sind übrigens Schreibbefehle in den Speicher des Zwischensteckers (Block-Nr., Addresse im Block, Länge, Payload) bzw. Lesebefehle mit 8010. Der Großteil der Zeilen schreibt Szenen, Sensor-Limits usw. WMS Studio macht das auch schon beim Einlernen, weswegen es schwierig ist, rauszufinden, was für das Einlernen notwendig ist.

                        1 Reply Last reply Reply Quote 0
                        • R
                          radiorichter last edited by

                          Hallo beisammen 😉

                          so nun ist es auch bei mir soweit, dass ich mein Warema per iobroker zum laufen bringen möchte.

                          Das mit dem Stick hat schon mal geklappt, hab auch Channel, Panid sowie Key eingetragen und das Skript neugestartet.

                          Doch irgendwie wird mir kein Ordner im Javasript adapter erstellt… Der WMS stick steckt im Pi und ist ca 1m vom WMS Aktor entfernt.

                          Hier mal der Log wenn ich das Skript neustarte:

                          20:59:30.166 [info] javascript.0 Stop script script.js.common.Skript2_2

                          20:59:30.321 [info] javascript.0 Start javascript script.js.common.Skript2_2

                          20:59:30.322 [info] javascript.0 script.js.common.Skript2_2: registered 0 subscriptions and 0 schedules

                          20:59:30.332 [info] javascript.0 script.js.common.Skript2_2: port opened

                          20:59:30.354 [info] javascript.0 script.js.common.Skript2_2: Stick Version: v37605107

                          Vielleicht kann mir ja hier einer von euch weiterhelfen 😉

                          1 Reply Last reply Reply Quote 0
                          • R
                            radiorichter last edited by

                            so ich nochmal:

                            Gibt es denn auch die Möglichkeit aus dem Quelltext vom Webcontrol was zu basteln?

                            hier mal der ein Bild von der Website bzw vom Code:

                            3364_2.jpg

                            
                              <title>Warema - Bedienen</title>
                            
                                    ![](Images/warema_flag_rot 220x40.png)
                            
                            *   [Bedienung](index.html)
                            
                            *   |
                            
                            *   [Einstellungen](einstellungen.html)
                            
                            *   |
                            
                            *   [Konfiguration](konfigurieren.html)
                            
                            *   |
                            
                            *   [System](system.html)
                            
                                      
                                      
                                      
                            
                                  
                                  
                                          
                                   
                            
                                  Automatiken
                            
                                  
                            
                                           |
                            
                                         |
                                           |
                            
                                           |
                            
                                         |
                                           |
                            
                                           |
                            
                                         |
                                           |
                            
                                           |
                            
                                         |
                                           |
                            
                                           |
                            
                                         |
                                           |
                            
                                  Message
                            
                                  Möchten Sie wirklich die Szene einlernen? Die alte Szene wird überschrieben.
                            
                            
                            1 Reply Last reply Reply Quote 0
                            • P
                              Pman last edited by

                              @radiorichter:

                              20:59:30.166 [info] javascript.0 Stop script script.js.common.Skript2_2

                              20:59:30.321 [info] javascript.0 Start javascript script.js.common.Skript2_2

                              20:59:30.322 [info] javascript.0 script.js.common.Skript2_2: registered 0 subscriptions and 0 schedules

                              20:59:30.332 [info] javascript.0 script.js.common.Skript2_2: port opened

                              20:59:30.354 [info] javascript.0 script.js.common.Skript2_2: Stick Version: v37605107 `

                              Es startet erstmal alles korrekt, dann wird aber kein Gerät gefunden. Das kann jetzt viele Gründe haben:

                              • alle angelernte Geräte sind außer Funkreichweite des Sticks. Besonders wenn du den Stick in einem Schrank oder Metallregal versteckst kann das passieren. Der Stick ist leider nicht auf starke Sendeleistung ausgelegt, ggf. kann ein USB-Verlängerungskabel helfen oder diverse 2.4 GHz Antennen-Mods.

                              • Key, PANID oder CHANNEL sind falsch

                              • Es befinden sich keine weiteren Geräte (wie z.B. Raffstore) im selben System, in das du den Stick eingelernt hast (das nehme ich mal nicht an)

                              Versuche am besten die Fehlerquellen in der oben beschriebenen Reihenfolge auszuschließen und schalte den Javascript-Adapter auf debug-Ausgabe, damit das Skript mehr Infos ausspuckt.

                              Ich hänge unten mal das Skript an, so wie bei mir in Verwendung (mit verfälschtem Key). So in etwa müsste das Skript ausgeben (ohne Debug):
                              ` > 0:28:11.073 [info] javascript.1 Start javascript script.js.Devices.WMS

                              00:28:11.073 [info] javascript.1 script.js.Devices.WMS: registered 0 subscriptions and 0 schedules

                              00:28:11.082 [info] javascript.1 script.js.Devices.WMS: port opened

                              00:28:11.110 [info] javascript.1 script.js.Devices.WMS: Stick Version: v37605100

                              00:28:16.259 [info] javascript.1 script.js.Devices.WMS: device type 20 found: 699906

                              00:28:16.295 [info] javascript.1 script.js.Devices.WMS: device type 20 found: F99906

                              00:28:16.296 [info] javascript.1 script.js.Devices.WMS: device type 20 found: 1E9996 `

                              var namespace = 'Custom.WMS';
                              var SerialPort = require('serialport');
                              
                              //config
                              const PATH = "/dev/ttyUSB0";
                              const CHANNEL = 17;
                              const PANID = "F228"; //inclusion mode: FFFF
                              const KEY = "0E99EB48AB0AEDBB5682857D933D294D"; //inclusion mode: "00112233445566778899AABBCCDDEEFF"
                              var positionInterval = 60; //how often current position is requested (seconds)
                              var scanInterval = 600;  //how often to scan for devices (seconds)
                              //listPorts();  //uncomment to list all available serial ports
                              
                              /* do not edit below! */
                              //globals
                              var knownDevices = {}; //stores known devices
                              var lastData = ''; //contains last packet
                              var writeQueue = []; //stores data to be sent to serial port
                              var timers = {};
                              
                              /* open serial port and setup parser */
                              function init() {
                                  //scan 3 times
                                  setTimeout(function () {
                                      wmsScan();
                                  }, 5000);
                                  setTimeout(function () {
                                      wmsScan();
                                  }, 10000);
                                  setTimeout(function () {
                                      wmsScan();
                                  }, 30000);
                                  //scan again every scanInterval seconds
                                  setInterval(function () {
                                      wmsScan();
                                  }, scanInterval * 1000);
                              }
                              
                              //connect to serial port
                              const port = new SerialPort(PATH, {
                                  baudRate: 125000,
                                  parity: 'none',
                                  dataBits: 8,
                                  stopBits: 1,
                                  autoOpen: false,
                              });
                              //create parser with '}' as delemiter
                              const parser = port.pipe(new SerialPort.parsers.Readline({delimiter: '}'}));
                              
                              // handle serial port errors
                              port.on('error', function () {
                                  log('serial port error!', 'warn');
                                  closePort();
                              });
                              
                              //parse incomming packets
                              parser.on('data', parseData);
                              
                              //open serial port
                              portOpen().then((msg) => {
                                  log(msg);
                                  writeAndWaitFor('{G}', 'gWMS USB-Stick', true).then((line) => {
                                      return writeAndWaitFor('{V}', 'v', true);
                                  }).then((line) => {
                                      log('Stick Version: ' + line);
                                      return writeAndWaitFor(encodeWMS('setKey', {key: KEY}), 'a', true);
                                  }).then((line) => {
                                      return writeAndWaitFor(encodeWMS('switchChannel', {
                                          channel: CHANNEL,
                                          panId: PANID
                                      }), 'a', true);
                                  }).then((line) => {
                                      init();
                                  }).catch((err) => {
                                      log(err, 'warn');
                                      closePort();
                                  });
                              }).catch((err) => {
                                  log(err, 'warn');
                              });
                              
                              /* serialport helper functions */
                              
                              //opens port with promise
                              function portOpen() {
                                  return new Promise((resolve, reject) => {
                                      port.open((err) => {
                                          err ? reject(err) : resolve('port opened');
                                      })
                                  });
                              }
                              
                              //close port if open
                              function closePort() {
                                  return new Promise((resolve, reject) => {
                                      log('closing open serial ports', 'warn');
                                      if (port && port.isOpen) {
                                          // close connection
                                          port.close(() => {
                                              resolve('port closed')
                                          });
                                      } else {
                                          reject('no port was opened');
                                      }
                                  });
                              }
                              
                              //on script stop close port
                              onStop(closePort, 2000);
                              
                              //handle incomming data
                              function parseData(data) {
                                  //trim data
                                  data = wmsTrim(data);
                                  //do nothing, if packet is received twice
                                  if (lastData === data) return
                                  lastData = data;
                                  log('received message: ' + data, 'debug');
                                  //decode data into object
                                  var obj = decodeWMS(data);
                                  log(JSON.stringify(obj), 'debug');
                                  //process object
                                  processWMS(obj);
                              }
                              
                              //list available serial ports
                              function listPorts() {
                                  SerialPort.list().then((ports) => {
                                      log('Serial Ports: ' + JSON.stringify(ports));
                                  }).catch((err) => {
                                      log('error listing ports: ' + JSON.stringify(err));
                                  });
                              }
                              
                              //write to serial port and wait for answer
                              function writeAndWaitFor(data, expect, rejectOnTimeout, timeout) {
                                  return new Promise((resolve, reject) => {
                                      if (isNaN(timeout)) timeout = 5000;
                                      log('sending ' + data, 'debug');
                                      listener = (line) => {
                                          if (wmsTrim(line).substr(0, expect.length) === expect) {
                                              log('received expected answer: ' + expect, 'debug');
                                              parser.removeListener('data', listener);
                                              resolve(wmsTrim(line));
                                          } else {
                                              log('received unexpected answer (still waiting): ' + wmsTrim(line).substr(0, expect.length) + '!=' + expect, 'debug');
                                          }
                                      };
                                      parser.on('data', listener);
                                      enqueue(data);
                                      //remove listener after 5 seconds
                                      setTimeout(() => {
                                          parser.removeListener('data', listener);
                                          rejectOnTimeout ? reject(expect) : resolve(false);
                                      }, timeout);
                                  });
                              }
                              
                              function enqueue(data) {
                                  if (typeof data === 'string') writeQueue.push(data);
                                  if (writeQueue.length === 1) {
                                      port.write(writeQueue.shift());
                                      port.drain((err) => {
                                          if (writeQueue.length) enqueue();
                                      });
                                  }
                              }
                              
                              /* WMS helper functions */
                              
                              //trim wms string
                              function wmsTrim(data) {
                                  return data.trim().substr(1);
                              }
                              
                              //decode wms strings into an object
                              function decodeWMS(packet) {
                                  var obj = {};
                                  switch (packet.substr(0, 1)) {
                                      case 'g':
                                          obj.type = 'stickType';
                                          obj.payload = {name: packet.substr(1)};
                                          break;
                                      case 'v':
                                          obj.type = 'stickVersion';
                                          obj.payload = {version: packet.substr(1)};
                                          break;
                                      case 'f':
                                          obj.type = 'error';
                                          break;
                                      case 'a':
                                          obj.type = 'ack';
                                          break;
                                      case 'r':
                                          obj.type = 'message';
                                          obj.payload = decodeWMSMessage(packet.substr(1));
                                          break;
                                      default:
                                          obj.type = 'unknown';
                                          obj.payload = packet.substr(1);
                                  }
                                  return obj;
                              }
                              
                              //decode wms messages into an object
                              function decodeWMSMessage(message) {
                                  var obj = {};
                                  obj.src = message.substr(0, 6);
                                  var type = message.substr(6, 4);
                                  var payload = message.substr(10);
                                  switch (type) {
                                      case '5018':
                                          obj.type = 'joinNetworkRequest';
                                          obj.messagePayload = {
                                              panId: payload.substr(0, 4),
                                              networkKey: payload.substr(4, 32).match(/../g).reverse().join(""),
                                              unknown: payload.substr(36, 2),
                                              channel: parseInt(payload.substr(38, 2), 16)
                                          };
                                          break;
                                      case '5060':
                                          obj.type = 'switchChannelRequest';
                                          obj.messagePayload = {
                                              panId: payload.substr(0, 4),
                                              deviceType: payload.substr(4, 2),
                                              channel: parseInt(payload.substr(6, 2), 16)
                                          };
                                          break;
                                      case '50AC':
                                          obj.type = 'ack';
                                          obj.messagePayload = {
                                              unknown: payload.substr(0, 4)
                                          };
                                          break;
                                      case '7020':
                                          obj.type = 'scanRequest';
                                          obj.messagePayload = {
                                              panId: payload.substr(0, 4),
                                              deviceType: payload.substr(4, 2)
                                          };
                                          break;
                                      case '7021':
                                          obj.type = 'scanResponse';
                                          obj.messagePayload = {
                                              panId: payload.substr(0, 4),
                                              deviceType: payload.substr(4, 2), //63: wetterstation, 06: webcontrol, 02: stick/software, 20: zwischenstecker
                                              unknown: payload.substr(6) //optional
                                          };
                                          break;
                                      case '7080':
                                          obj.type = 'weatherBroadcast';
                                          obj.messagePayload = {
                                              unknown_1: payload.substr(0, 2),
                                              wind: parseInt(payload.substr(2, 2), 16),
                                              lumen: payload.substr(4, 2) === '00' ? parseInt(payload.substr(12, 2), 16) * 2 : parseInt(payload.substr(4, 2), 16) * parseInt(payload.substr(12, 2), 16) * 2,
                                              unknown_2: payload.substr(6, 6),
                                              unknown_3: payload.substr(14, 2),
                                              rain: payload.substr(16, 2) === 'C8',
                                              temp: parseInt(payload.substr(18, 2), 16) / 2 - 35,
                                              unknown_4: payload.substr(20)
                                          };
                                          break;
                                      case '7050':
                                          obj.type = 'beckonRequest';
                                          break;
                                      case '7070':
                                          obj.type = 'controlRequest';
                                          obj.messagePayload = {
                                              unknown: payload.substr(0, 2),
                                              position: parseInt(payload.substr(2, 2), 16) / 2,
                                              angle: parseInt(payload.substr(4, 2), 16) - 127,
                                              valance_1: payload.substr(6, 2),
                                              valance_2: payload.substr(8, 2)
                                          };
                                          break;
                                      case '7071':
                                          obj.type = 'controlResponse';
                                          obj.messagePayload = payload;
                                          break;
                                      case '8010':
                                          obj.type = 'parameterGetRequest';
                                          obj.messagePayload = {
                                              parameter: payload.substr(0) //01000005: position, 26000046: clock timer settings, 0C000006: auto modes & limits
                                          };
                                          break;
                                      case '8011':
                                          obj.type = 'parameterGetResponse';
                                          obj.messagePayload = {
                                              parameter: payload.substr(0, 8)
                                          };
                                          switch (obj.messagePayload.parameter) {
                                              case '01000003': //position
                                              case '01000005': //position
                                                  obj.messagePayload.type = 'position';
                                                  obj.messagePayload.position = parseInt(payload.substr(8, 2), 16) / 2;
                                                  obj.messagePayload.angle = parseInt(payload.substr(10, 2), 16) - 127;
                                                  obj.messagePayload.valance_1 = payload.substr(12, 2);
                                                  obj.messagePayload.valance_2 = payload.substr(14, 2);
                                                  break;
                                              case '0C000006': //auto modes & limits
                                                  obj.messagePayload.type = 'autoSettings';
                                                  obj.messagePayload.wind = parseInt(payload.substr(8, 2), 16);
                                                  obj.messagePayload.rain = parseInt(payload.substr(10, 2), 16);
                                                  obj.messagePayload.sun = parseInt(payload.substr(12, 2), 16);
                                                  obj.messagePayload.dusk = parseInt(payload.substr(14, 2), 16);
                                                  obj.messagePayload.op = parseInt(payload.substr(16, 2), 16);
                                                  break;
                                              case '26000046':
                                                  obj.messagePayload.type = 'clock';
                                                  obj.messagePayload.unknown = payload.substr(8);
                                                  break;
                                              default:
                                                  obj.messagePayload.type = 'unknown';
                                                  obj.messagePayload.unknown = payload.substr(8);
                                          }
                                          break;
                                      case '8020':
                                          obj.type = 'parameterSetRequest';
                                          obj.messagePayload = {
                                              parameter: payload.substr(0, 8)
                                          };
                                          switch (obj.messagePayload.parameter) {
                                              case '0B080009':
                                                  obj.messagePayload.type = 'clock';
                                                  obj.messagePayload.year = parseInt(payload.substr(8, 2), 16);
                                                  obj.messagePayload.month = parseInt(payload.substr(10, 2), 16);
                                                  obj.messagePayload.day = parseInt(payload.substr(12, 2), 16);
                                                  obj.messagePayload.hour = parseInt(payload.substr(14, 2), 16);
                                                  obj.messagePayload.minute = parseInt(payload.substr(16, 2), 16);
                                                  obj.messagePayload.second = parseInt(payload.substr(18, 2), 16);
                                                  obj.messagePayload.day_of_week = parseInt(payload.substr(20, 2), 16);
                                                  obj.messagePayload.unknown = payload.substr(22);
                                                  break;
                                              default:
                                                  obj.messagePayload.type = 'unknown';
                                                  obj.messagePayload.unknown = payload.substr(8);
                                          }
                                          break;
                                      default:
                                          obj.type = 'unknown';
                                          obj.messagePayload = payload;
                                  }
                                  return obj;
                              }
                              
                              //create wms strings
                              function encodeWMS(type, parameter) {
                                  if (!parameter) parameter = {};
                                  switch (type) {
                                      case 'setKey':
                                          if (!parameter.key) return false;
                                          return '{K401' + parameter.key + '}';
                                          break;
                                      case 'setScanMode':
                                          if (isNaN(parameter.channel) || !parameter.panId) return false;
                                          return '{M#' + parameter.channel + parameter.panId.match(/../g).reverse().join("") + '}';
                                          break;
                                      case 'switchChannel':
                                          if (isNaN(parameter.channel) || !parameter.panId) return false;
                                          return '{M%' + parameter.channel + parameter.panId + '}';
                                          break;
                                      case 'ack':
                                          if (!parameter.dst) return false;
                                          return '{R21' + parameter.dst + '50AC}';
                                          break;
                                      case 'switchChannelRequest': //channel 17 fixed
                                          if (!parameter.panId) return false;
                                          return '{R04FFFFFF5060' + parameter.panId + '021100}'; // dst or FFFFFF???
                                          break;
                                      case 'scanRequest':
                                          return '{R04FFFFFF7020' + parameter.panId + '02}';
                                          break;
                                      case 'scanResponse':
                                          if (!parameter.panId || !parameter.dst) return false;
                                          return '{R01' + parameter.dst + '7021' + parameter.panId + '02}'; //fixed to deviceType 02 for now
                                          break;
                                      case 'beckonRequest':
                                          if (!parameter.dst) return false;
                                          return '{R06' + parameter.dst + '7050}';
                                          break;
                                      case 'controlRequest':
                                          if (!parameter.dst || isNaN(parameter.position) || isNaN(parameter.angle)) return false;
                                          return '{R04' + parameter.dst + '7070' + '03'
                                              + ('0' + (Math.min(Math.max(parameter.position, 0), 100) * 2).toString(16)).substr(-2).toUpperCase()
                                              + ('0' + (Math.min(Math.max(parameter.angle, 0), 90) + 127).toString(16)).substr(-2).toUpperCase()
                                              + 'FFFF}'; //no idea how valance works
                                          break;
                                      case 'parameterGetRequest':
                                          if (!parameter.dst || !parameter.parameter) return false;
                                          return '{R06' + parameter.dst + '8010' + parameter.parameter + '}';
                                          break;
                                      case 'parameterGetRequestPosition':
                                          if (!parameter.dst) return false;
                                          return '{R06' + parameter.dst + '8010' + '01000005}';
                                          break;
                                      case 'parameterGetRequestClock':
                                          if (!parameter.dst) return false;
                                          return '{R06' + parameter.dst + '8010' + '26000046}';
                                          break;
                                      case 'parameterGetRequestAutoSettings':
                                          if (!parameter.dst) return false;
                                          return '{R06' + parameter.dst + '8010' + '0C000006}';
                                          break;
                                      case 'parameterSetRequestAutoSettings':
                                          if (!parameter.dst || !parameter.parameter
                                              || isNaN(parameter.wind) || isNaN(parameter.rain)
                                              || isNaN(parameter.sun) || isNaN(parameter.dusk))
                                              return false;
                                          return '{R06' + parameter.dst + '8020' + '0D000004'
                                              + ('0' + Math.min(Math.max(parameter.wind, 0), 9).toString(16)).substr(-2).toUpperCase()
                                              + ('0' + Math.min(Math.max(parameter.rain, 0), 9).toString(16)).substr(-2).toUpperCase()
                                              + ('0' + Math.min(Math.max(parameter.sun, 0), 9).toString(16)).substr(-2).toUpperCase()
                                              + ('0' + Math.min(Math.max(parameter.dusk, 0), 9).toString(16)).substr(-2).toUpperCase()
                                              + (parameter.op ? '01' : '00')
                                              + '}';
                                          break;
                                      case 'parameterSetRequestAutoAll':
                                          if (!parameter.dst) return false;
                                          return '{R06' + parameter.dst + '8020' + '0D040001' + (parameter.op ? '01' : '00') + '}';
                                          break;
                                      default: //unkown message type
                                          return false;
                                          break;
                                  }
                              }
                              
                              //process packets
                              function processWMS(obj) {
                                  //log(JSON.stringify(obj));
                                  if (obj.type !== 'message') return;
                                  switch (obj.payload.type) {
                                      case 'switchChannelRequest':
                                          log('received switchChannelRequest, switching channel to ' + obj.payload.messagePayload.channel, 'debug');
                                          writeAndWaitFor(encodeWMS('switchChannel', {
                                              channel: obj.payload.messagePayload.channel,
                                              panId: PANID
                                          }), 'a');
                                          break;
                                      case 'scanRequest':
                                          // send scanResponse
                                          log('received scanRequest, sending scanResponse', 'debug');
                                          writeAndWaitFor(encodeWMS('scanResponse', {dst: obj.payload.src, panId: PANID}), 'a');
                                          break;
                                      case 'joinNetworkRequest':
                                          log('received joinNetworkRequest:', 'debug');
                                          log('KEY: ' + obj.payload.messagePayload.networkKey);
                                          log('CHANNEL: ' + obj.payload.messagePayload.channel);
                                          log('PANID: ' + obj.payload.messagePayload.panId);
                                          writeAndWaitFor(encodeWMS('ack', {dst: obj.payload.src}), 'a');
                                          break;
                                      case 'scanResponse':
                                          log('received scanResponse', 'debug');
                                          log('TYPE: ' + obj.payload.messagePayload.deviceType, 'debug');
                                          log('SNR:' + obj.payload.src, 'debug');
                                          if (obj.payload.messagePayload.deviceType === '20') {
                                              createState(this.namespace + '.Raffstore.' + obj.payload.src + '.position', 0, false, {
                                                  type: 'number',
                                                  min: 0,
                                                  max: 100,
                                                  unit: '%'
                                              });
                                              createState(this.namespace + '.Raffstore.' + obj.payload.src + '.angle', 0, false, {
                                                  type: 'number',
                                                  min: 0,
                                                  max: 90,
                                                  unit: '°'
                                              }, function () {
                                                  if (knownDevices[obj.payload.src]) return;
                                                  knownDevices[obj.payload.src] = true;
                                                  var src = obj.payload.src;
                                                  log('device type 20 found: ' + src);
                                                  var deviceId = 'javascript.' + instance + '.' + this.namespace + '.Raffstore.' + src;
                                                  on({id: deviceId + '.position', change: 'ne', ack: false}, function (obj) {
                                                      //send parameter
                                                      writeAndWaitFor(
                                                          encodeWMS('controlRequest', {
                                                              dst: src,
                                                              position: obj.state.val,
                                                              angle: getState(deviceId + '.angle').val
                                                          }),
                                                          'r' + src + '7071'
                                                      ).then(() => {
                                                          var lastValue = getState(deviceId + '.position').val;
                                                          writeAndWaitFor(encodeWMS('parameterGetRequestPosition', {dst: src}), 'a');
                                                          var timer = setInterval(function () {
                                                              //get parameter periodicaly until no change is detected
                                                              log(getState(deviceId + '.position').val + ':' + lastValue, 'debug')
                                                              if (getState(deviceId + '.position').val === lastValue)
                                                                  clearInterval(timer);
                                                              lastValue = getState(deviceId + '.position').val;
                                                              writeAndWaitFor(encodeWMS('parameterGetRequestPosition', {dst: src}), 'a');
                                                          },  3500);
                                                          //setState(deviceId + '.position', getState(deviceId + '.position').val, true);
                                                      });
                                                  });
                                                  on({id: deviceId + '.angle', change: 'ne', ack: false}, function (obj) {
                                                      //send parameter
                                                      writeAndWaitFor(encodeWMS('controlRequest', {
                                                              dst: src,
                                                              position: getState(deviceId + '.position').val,
                                                              angle: obj.state.val
                                                          }),
                                                          'r' + src + '7071'
                                                      ).then(() => {
                                                          var lastValue = getState(deviceId + '.angle').val;
                                                          writeAndWaitFor(encodeWMS('parameterGetRequestPosition', {dst: src}), 'a');
                                                          var timer = setInterval(function () {
                                                              //get parameter periodicaly until no change is detected
                                                              log(getState(deviceId + '.angle').val + ':' + lastValue, 'debug')
                                                              if (getState(deviceId + '.angle').val === lastValue)
                                                                  clearInterval(timer);
                                                              lastValue = getState(deviceId + '.angle').val;
                                                              writeAndWaitFor(encodeWMS('parameterGetRequestPosition', {dst: src}), 'a');
                                                          },  3500);
                                                          //setState(deviceId + '.angle', getState(deviceId + '.angle').val, true);
                                                      });
                                                  });
                                                  setTimeout(function () {
                                                      //get parameter once
                                                      writeAndWaitFor(encodeWMS('parameterGetRequestPosition', {dst: src}), 'a');
                                                  }, 5000 + Math.random() * 5000);
                                                  setInterval(function () {
                                                      //get parameter periodicaly
                                                      writeAndWaitFor(encodeWMS('parameterGetRequestPosition', {dst: src}), 'a');
                                                  }, positionInterval * 1000 + Math.random() * 5000);
                                              });
                                          }
                                          break;
                                      case 'parameterGetResponse':
                                          log('received parameterGetResponse', 'debug');
                                          switch (obj.payload.messagePayload.type) {
                                              case 'position':
                                                  setStateDelayed(this.namespace + '.Raffstore.' + obj.payload.src + '.position', obj.payload.messagePayload.position, true, 100, true);
                                                  setStateDelayed(this.namespace + '.Raffstore.' + obj.payload.src + '.angle', obj.payload.messagePayload.angle, true, 100, true);
                                              default:
                                                  break;
                                          }
                                          break;
                                      case 'weatherBroadcast':
                                          log('received weatherBroadcast', 'debug');
                                          createState(this.namespace + '.Wetter.' + obj.payload.src + '.temp', 0, false, {
                                              type: 'number',
                                              unit: '°C',
                                              write: false
                                          }, function () {
                                              setStateDelayed(this.namespace + '.Wetter.' + obj.payload.src + '.temp', obj.payload.messagePayload.temp, true, 100, true);
                                          });
                                          createState(this.namespace + '.Wetter.' + obj.payload.src + '.wind', 0, false, {
                                              type: 'number',
                                              min: 0,
                                              unit: 'm/s',
                                              write: false
                                          }, function () {
                                              setStateDelayed(this.namespace + '.Wetter.' + obj.payload.src + '.wind', obj.payload.messagePayload.wind, true, 100, true);
                                          });
                                          createState(this.namespace + '.Wetter.' + obj.payload.src + '.lux', 0, false, {
                                              type: 'number',
                                              min: 0,
                                              unit: 'lux',
                                              write: false
                                          }, function () {
                                              setStateDelayed(this.namespace + '.Wetter.' + obj.payload.src + '.lux', obj.payload.messagePayload.lumen, true, 100, true);
                                          });
                                          createState(this.namespace + '.Wetter.' + obj.payload.src + '.rain', false, false, {
                                              type: 'boolean',
                                              write: false
                                          }, function () {
                                              setStateDelayed(this.namespace + '.Wetter.' + obj.payload.src + '.rain', obj.payload.messagePayload.rain, true, 100, true);
                                          });
                                          break;
                                      default:
                                          break;
                                  }
                              }
                              
                              //scan for devices
                              function wmsScan() {
                                  writeAndWaitFor(encodeWMS('scanRequest', {panId: PANID}), 'a');
                              }
                              
                              
                              1 Reply Last reply Reply Quote 0
                              • R
                                radiorichter last edited by

                                komme immernoch nicht weiter… 😢

                                also reichweite sollte passen, der Stick ist nun 10 cm vorm dem Aktor... PANID, CHANNEL und KEY habe ich nun nochmal eingelernt, kam genau das gleiche raus.

                                Das einzige was mich stutzig macht ist, dass ich den Stick nicht wirklich in der Fernbedienung speichern kann.

                                Bei mir leuchten sozusagen gar keine der Produkttasten (wie in der Anleitung beschrieben) also ob die Fernbedienung dann irgendwas abspeichert weiß ich nicht...Wenn ich einen Aktor nehme der schon zum normalen Netzwerk gehört, klappt das mit den Produkttasten wunderbar.

                                3364_unbenannt.jpg

                                1 Reply Last reply Reply Quote 0
                                • P
                                  Pman last edited by

                                  Schalt mal auf debug und poste nochmal den Start des Adapters.

                                  1 Reply Last reply Reply Quote 0
                                  • R
                                    radiorichter last edited by

                                    hey pman,

                                    hier mal alles was bei mir so passiert:

                                    also wms stick:

                                    3364_warema_1.jpg

                                    danach in der FB ein neues gerät suchen:

                                    3364_warema_22.jpg

                                    panid, channel und key eintragen und skript neustarten:

                                    3364_warema_33.jpg

                                    aber danach passiert dann nichts mehr…

                                    bekomme auch immer den selben key raus, also glaub ich schon dass ich im richtigen netz bin, sofern die FB ja die anderen Rolläden steuern kann.

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      Pman last edited by

                                      Diesen Debug-Knoopf direkt dort kannte ich noch gar nicht, weiß auch nicht was der genau macht. Was ich meinte ist: Im ioBroker Admin und Instanzen den ganzen Javascript-Adapter (bzw. die Instanz) auf Debug-Ausgabe schalten. Dazu musst du oben noch den "Expertenmodus" aktivieren.

                                      Es sollte dann idealerweise wie unten aussehen, du kannst ja mal vergleichen wo es stoppt oder anders aussieht.
                                      ` > 17:11:51.320 [info] javascript.1 Stop script script.js.Devices.WMS

                                      17:11:51.321 [warn] javascript.1 script.js.Devices.WMS: closing open serial ports

                                      17:11:53.348 [info] javascript.1 Start javascript script.js.Devices.WMS

                                      17:11:53.348 [info] javascript.1 script.js.Devices.WMS: registered 0 subscriptions and 0 schedules

                                      17:11:53.368 [info] javascript.1 script.js.Devices.WMS: port opened

                                      17:11:53.373 [debug] javascript.1 script.js.Devices.WMS: sending {G}

                                      17:11:53.416 [debug] javascript.1 script.js.Devices.WMS: received message: gWMS USB-Stick

                                      17:11:53.416 [debug] javascript.1 script.js.Devices.WMS: {"type":"stickType","payload":{"name":"WMS USB-Stick"}}

                                      17:11:53.416 [debug] javascript.1 script.js.Devices.WMS: received expected answer: gWMS USB-Stick

                                      17:11:53.417 [debug] javascript.1 script.js.Devices.WMS: sending {V}

                                      17:11:53.426 [debug] javascript.1 script.js.Devices.WMS: received message: v37605100

                                      17:11:53.427 [debug] javascript.1 script.js.Devices.WMS: {"type":"stickVersion","payload":{"version":"37605100"}}

                                      17:11:53.427 [debug] javascript.1 script.js.Devices.WMS: received expected answer: v

                                      17:11:53.427 [info] javascript.1 script.js.Devices.WMS: Stick Version: v37605100

                                      17:11:53.427 [debug] javascript.1 script.js.Devices.WMS: sending {K<key>}

                                      17:11:53.448 [debug] javascript.1 script.js.Devices.WMS: received message: a

                                      17:11:53.448 [debug] javascript.1 script.js.Devices.WMS: {"type":"ack"}

                                      17:11:53.448 [debug] javascript.1 script.js.Devices.WMS: received expected answer: a

                                      17:11:53.449 [debug] javascript.1 script.js.Devices.WMS: sending {M%<channel><panid>}

                                      17:11:53.462 [debug] javascript.1 script.js.Devices.WMS: received expected answer: a

                                      17:11:58.464 [debug] javascript.1 script.js.Devices.WMS: sending {R04FFFFFF7020<panid>02}

                                      17:11:58.474 [debug] javascript.1 script.js.Devices.WMS: received expected answer: a

                                      17:11:58.566 [debug] javascript.1 script.js.Devices.WMS: received message: r6997057021<panid>208FFF03000000000000000000000201010000000000000000

                                      17:11:58.566 [debug] javascript.1 script.js.Devices.WMS: {"type":"message","payload":{"src":"699705","type":"scanResponse","messagePayload":{"panId":"<panid>","deviceType":"20","unknown":"8FFF03000000000000000000000201010000000000000000"}}}

                                      17:11:58.567 [debug] javascript.1 script.js.Devices.WMS: received scanResponse

                                      17:11:58.567 [debug] javascript.1 script.js.Devices.WMS: TYPE: 20

                                      17:11:58.567 [debug] javascript.1 script.js.Devices.WMS: SNR:699705</panid></panid></panid></panid></channel></key> `

                                      1 Reply Last reply Reply Quote -1
                                      • R
                                        radiorichter last edited by

                                        puh… im log wird nach wie vor nicht mehr angezeigt... bekomme keine debug ausgabe, ich denke mein skript kommt gar nicht bis zu dem punkt...

                                        punkt 6 sozusagen bei dir, soweit komme ich nicht:

                                        17:11:53.373 [debug] javascript.1 script.js.Devices.WMS: sending {G}

                                        hier der log:

                                        3364_111.jpg
                                        wenn ich zudem die Hilfe ausgabe aktiviere kommt das hier raus:

                                        3364_112.jpg

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          Pman last edited by

                                          Die Stick-Version steht ja in deinem Log und vorher müssten schon einige DEBUG Meldungen kommen!

                                          z.B. :
                                          > [debug] javascript.1 script.js.Devices.WMS: sending {V}
                                          Ich glaube du hast noch immer nicht den Javascript-Adapter auf Debug gestellt.

                                          1 Reply Last reply Reply Quote 0
                                          • R
                                            radiorichter last edited by

                                            :roll: okay wieder was gelernt mit der debug ausgabe… habs natürlich falsch gemacht....

                                            nun hier das richtige Log. Hab alles verglichen aber keine Unterschiede feststellen können...

                                            Heist ja nun das er Geräte findet, aber keine Datenpunkte anlegt... kann das eine Einstellung im Javascript-Adapter sein?

                                            ` > javascript.0 2018-10-29 06:42:43.939 debug script.js.common.warema_versuch3: SNR:F33605

                                            javascript.0 2018-10-29 06:42:43.939 debug script.js.common.warema_versuch3: TYPE: 21

                                            javascript.0 2018-10-29 06:42:43.939 debug script.js.common.warema_versuch3: received scanResponse

                                            javascript.0 2018-10-29 06:42:43.939 debug script.js.common.warema_versuch3: {"type":"message","payload":{"src":"F33605","type":"scanResponse","messagePayload":{"panId":"1529","deviceType":"21","unknown":"8FFF03000000000000000000020300010000000000000000'}}}

                                            javascript.0 2018-10-29 06:42:43.939 debug script.js.common.warema_versuch3: received message: rF3360570211529218FFF03000000000000000000020300010000000000000000

                                            javascript.0 2018-10-29 06:42:43.938 debug script.js.common.warema_versuch3: SNR:463705

                                            javascript.0 2018-10-29 06:42:43.938 debug script.js.common.warema_versuch3: TYPE: 21

                                            javascript.0 2018-10-29 06:42:43.938 debug script.js.common.warema_versuch3: received scanResponse

                                            javascript.0 2018-10-29 06:42:43.938 debug script.js.common.warema_versuch3: {"type":"message","payload":{"src":"463705","type":"scanResponse","messagePayload":{"panId":"1529","deviceType":"21","unknown":"8FFF03000000000000000000020300010000000000000000'}}}

                                            javascript.0 2018-10-29 06:42:43.935 debug script.js.common.warema_versuch3: received message: r46370570211529218FFF03000000000000000000020300010000000000000000

                                            javascript.0 2018-10-29 06:42:43.806 debug script.js.common.warema_versuch3: received expected answer: a

                                            javascript.0 2018-10-29 06:42:43.792 debug script.js.common.warema_versuch3: sending {R04FFFFFF7020152902}

                                            javascript.0 2018-10-29 06:42:38.790 debug script.js.common.warema_versuch3: received expected answer: a

                                            javascript.0 2018-10-29 06:42:38.767 debug script.js.common.warema_versuch3: sending {M%171529}

                                            javascript.0 2018-10-29 06:42:38.767 debug script.js.common.warema_versuch3: received expected answer: a

                                            javascript.0 2018-10-29 06:42:38.767 debug script.js.common.warema_versuch3: {"type":"ack"}

                                            javascript.0 2018-10-29 06:42:38.766 debug script.js.common.warema_versuch3: received message: a

                                            javascript.0 2018-10-29 06:42:38.737 debug script.js.common.warema_versuch3: sending {%%%%%%%%%%449D8FFE6BE301ED27377FE9F0}

                                            javascript.0 2018-10-29 06:42:38.736 info script.js.common.warema_versuch3: Stick Version: v37605107

                                            javascript.0 2018-10-29 06:42:38.736 debug script.js.common.warema_versuch3: received expected answer: v

                                            javascript.0 2018-10-29 06:42:38.736 debug script.js.common.warema_versuch3: {"type":"stickVersion","payload":{"version":"37605107"}}

                                            javascript.0 2018-10-29 06:42:38.735 debug script.js.common.warema_versuch3: received message: v37605107

                                            javascript.0 2018-10-29 06:42:38.710 debug script.js.common.warema_versuch3: sending {V}

                                            javascript.0 2018-10-29 06:42:38.709 debug script.js.common.warema_versuch3: received expected answer: gWMS USB-Stick

                                            javascript.0 2018-10-29 06:42:38.709 debug script.js.common.warema_versuch3: {"type":"stickType","payload":{"name":"WMS USB-Stick"}}

                                            javascript.0 2018-10-29 06:42:38.708 debug script.js.common.warema_versuch3: received message: gWMS USB-Stick

                                            javascript.0 2018-10-29 06:42:38.689 debug script.js.common.warema_versuch3: sending {G}

                                            javascript.0 2018-10-29 06:42:38.687 info script.js.common.warema_versuch3: port opened

                                            javascript.0 2018-10-29 06:42:38.675 info script.js.common.warema_versuch3: registered 0 subscriptions and 0 schedules

                                            javascript.0 2018-10-29 06:42:38.674 info Start javascript script.js.common.warema_versuch3

                                            javascript.0 2018-10-29 06:42:34.944 info Stop script script.js.common.warema_versuch3 `

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            841
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            26
                                            121
                                            27554
                                            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