Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MySensors Adapter SERIAL and Ethernet (TCP and UDP) ist DA!!!!!

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    MySensors Adapter SERIAL and Ethernet (TCP and UDP) ist DA!!!!!

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

      @Trident:

      Vergibst du dann auch die Sensor IDs? - Siehe Diagramm?

      Ich update das gleich mal und gebe Feedback `
      Ja, aber Presentation ist immer aktiv. (Müssen noch diskutieren)

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

        Habe noch das Kommando:

        iobroker upload mysensors
        

        hinzugefügt.

        1 Reply Last reply Reply Quote 0
        • T
          Trident last edited by

          ok - aktueller Stand sieht aber schon sehr gut aus! Der Node wurde erkannt und hat eine ID bekommen!

          Die Werte kommen auch schon an!

          Wie das Verhalten bei mehreren Nodes ist kann ich leider mangels eines zweiten Nodes (Hardware) nicht testen. Werde aber mal weitere ChildIDs hinzufügen und berichten!

          1 Reply Last reply Reply Quote 0
          • T
            Trident last edited by

            Hallo zusammen,

            es scheint noch ein Problem bei der Zuordnung zu geben, wenn mehrere Child_sensors-ID an einem Knoten vergeben sind. Es werden zwar alle benötigten Sub-Strukturen in ioBroker richtig erkannt und angelegt, aber leider wird der Wert des zweiten Sensors am Node nicht richtig in ioBroker geschrieben.

            Anbei das Log aus ioBroker:
            ` > mysensors-0 2016-04-10 21:46:37 warn Serial data received: 1;1;1;0;16;0

            mysensors-0 2016-04-10 21:46:37 info Log :read: 1-1-0 s=1,c=1,t=16,pt=2,l=2,sg=0:0

            mysensors-0 2016-04-10 21:46:37 warn Serial data received: 0;0;3;0;9;read: 1-1-0 s=1,c=1,t=16,pt=2,l=2,sg=0:0

            mysensors-0 2016-04-10 21:46:37 warn Serial data received: 1;0;1;0;35;436

            mysensors-0 2016-04-10 21:46:37 info Log :read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:436

            mysensors-0 2016-04-10 21:46:37 warn Serial data received: 0;0;3;0;9;read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:436

            mysensors-0 2016-04-10 21:46:06 warn Serial data received: 1;0;1;0;35;430

            mysensors-0 2016-04-10 21:46:06 info Log :read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:430

            mysensors-0 2016-04-10 21:46:06 warn Serial data received: 0;0;3;0;9;read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:430

            mysensors-0 2016-04-10 21:45:36 warn Serial data received: 1;1;1;0;16;1

            mysensors-0 2016-04-10 21:45:36 info Log :read: 1-1-0 s=1,c=1,t=16,pt=2,l=2,sg=0:1 `

            Und der Auszug aus dem Serial-Monitor des Sensor-Nodes:

            ` > end: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:439

            439

            436

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:436

            436

            432

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:432

            432

            429

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:429

            429

            425

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:425

            425

            431

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:431

            431

            429

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:429

            429

            434

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:434

            434

            433

            send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:433

            433 `

            Es hängt ein analoger Füllstandssensor am Node (1. Child-Sensor-ID) und ein Regensensor (digital) als zweiter Child_Sensor am Node. Die beiden unterschiedlichen Messages sind gut zu erkennen, sowohl im LOG von ioBroker als auch im Serial-Monitor des Nodes (der digitale Output wird in der Nachricht invertiert). Leider ändert sich nur der Wert des ersten Child-Id-Sensors in den ioBroker Objekten. Wie gesagt, beide wurden richtig erkannt und angelegt. Die Interpretation der Presentation Message klappt also schon wunderbar! Auch das Anlernen geht nun perfekt und ohne Probleme. Einmal angelernt connected der Node auch nach einen Neustart direkt und ohne Probleme.

            @Bluefox: Ich bin aber weiterhin der Meinung, dass die Presentation-Messages nur im Anlernmodus ausgewertet werden sollten. Was hindert denn sonst den Adapter auch Sensoren der Nachbarn in meine Daten aufzunehmen? Jeder Mysensors-Node sendet ja beim Power-Cylclen immer diese Nachricht. Das könnte schon zu Problemen führen.

            Ich hoffe die Logs helfen… Ich unterstütze gerne weiter, sagt mir einfach was ich testen soll!

            Viele Grüße

            Trident

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

              Welche Version von mysensor nutzt du? 1.5 oder 2.0?

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

                @Trident:

                Hallo zusammen,

                es scheint noch ein Problem bei der Zuordnung zu geben, wenn mehrere Child_sensors-ID an einem Knoten vergeben sind. Es werden zwar alle benötigten Sub-Strukturen in ioBroker richtig erkannt und angelegt, aber leider wird der Wert des zweiten Sensors am Node nicht richtig in ioBroker geschrieben.

                Anbei das Log aus ioBroker:
                ` > mysensors-0 2016-04-10 21:46:37 warn Serial data received: 1;1;1;0;16;0

                mysensors-0 2016-04-10 21:46:37 info Log :read: 1-1-0 s=1,c=1,t=16,pt=2,l=2,sg=0:0

                mysensors-0 2016-04-10 21:46:37 warn Serial data received: 0;0;3;0;9;read: 1-1-0 s=1,c=1,t=16,pt=2,l=2,sg=0:0

                mysensors-0 2016-04-10 21:46:37 warn Serial data received: 1;0;1;0;35;436

                mysensors-0 2016-04-10 21:46:37 info Log :read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:436

                mysensors-0 2016-04-10 21:46:37 warn Serial data received: 0;0;3;0;9;read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:436

                mysensors-0 2016-04-10 21:46:06 warn Serial data received: 1;0;1;0;35;430

                mysensors-0 2016-04-10 21:46:06 info Log :read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:430

                mysensors-0 2016-04-10 21:46:06 warn Serial data received: 0;0;3;0;9;read: 1-1-0 s=0,c=1,t=35,pt=2,l=2,sg=0:430

                mysensors-0 2016-04-10 21:45:36 warn Serial data received: 1;1;1;0;16;1

                mysensors-0 2016-04-10 21:45:36 info Log :read: 1-1-0 s=1,c=1,t=16,pt=2,l=2,sg=0:1 `

                Und der Auszug aus dem Serial-Monitor des Sensor-Nodes:

                ` > end: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:439

                439

                436

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:436

                436

                432

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:432

                432

                429

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:429

                429

                425

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:425

                425

                431

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:431

                431

                429

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:429

                429

                434

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:434

                434

                433

                send: 1-1-0-0 s=0,c=1,t=35,pt=2,l=2,sg=0,st=ok:433

                433 `

                Es hängt ein analoger Füllstandssensor am Node (1. Child-Sensor-ID) und ein Regensensor (digital) als zweiter Child_Sensor am Node. Die beiden unterschiedlichen Messages sind gut zu erkennen, sowohl im LOG von ioBroker als auch im Serial-Monitor des Nodes (der digitale Output wird in der Nachricht invertiert). Leider ändert sich nur der Wert des ersten Child-Id-Sensors in den ioBroker Objekten. Wie gesagt, beide wurden richtig erkannt und angelegt. Die Interpretation der Presentation Message klappt also schon wunderbar! Auch das Anlernen geht nun perfekt und ohne Probleme. Einmal angelernt connected der Node auch nach einen Neustart direkt und ohne Probleme.

                @Bluefox: Ich bin aber weiterhin der Meinung, dass die Presentation-Messages nur im Anlernmodus ausgewertet werden sollten. Was hindert denn sonst den Adapter auch Sensoren der Nachbarn in meine Daten aufzunehmen? Jeder Mysensors-Node sendet ja beim Power-Cylclen immer diese Nachricht. Das könnte schon zu Problemen führen.

                Ich hoffe die Logs helfen… Ich unterstütze gerne weiter, sagt mir einfach was ich testen soll!

                Viele Grüße

                Trident `
                Ich habe Zweifel, dass wenn dein Nachbar in dein Netzwerk kommen kann, ob du alles richtig gemacht hast. 😄 Noch schlimmer wenn Nachbar auch zu serielle Kommunikation sich anschließen kann. :lol:

                Lass uns Klarheit schaffen. Du hast ein multisensor mit ID 1. Da gibt es zwei children 0 - Füllstandssensor und 1 - boolean Regensensor.

                Und Regensensor geht nicht. Wie sieht dein Objekt baumeln an dieser Stelle?

                1 Reply Last reply Reply Quote 0
                • T
                  Trident last edited by

                  Hi bluefox,

                  Ich habe da gar keine Zweifel. Wir sprechen hier ja NICHT von meinem WLAN. Der Sensor Node kommuniziert ja über eine 2,4 ghz Funkverbindung (ähnlich homematic) mit dem serial Gateway (vgl. http://www.mysensors.org/about/network). Die Sensoren sind ja nicht am Gateway angeschlossen. Dies wurde komplett dem Konzept von mysensors widersprechen und wird explizit nicht empfohlen. Die Sensoren bilden ein einfaches Funk-Netzwerk, man kann dieses zwar verschlüsseln ähnlich wie die homematic Geräte - muss man aber nicht. Insofern kann der Nachbar sehr wohl in meiner datenhaltung auftauche - was würde iobroker davon abhalten die empfangene Presentation Nachricht zu interpretieren? Und klar an die serial Verbindung kommt mein Nachbar nicht 🙂

                  Zu deiner Frage: die Auflistung stimmt und genau das spiegelt auch mein Objekt Baum wieder. Die Struktur wird korrekt aufgebaut inkl. Ids. Danke für deine Unterstützung!

                  Viele Grüße

                  Trident

                  1 Reply Last reply Reply Quote 0
                  • T
                    Trident last edited by

                    hi zusammen,

                    ich habe mir den code des adapters nochmal angesehen. Ich bin kein js-kenner und habe daher die eine oder andere Frage. Der Ablauf der Daten Verarbeitung kommt mir etwas komisch vor, hier ist ein Ausschnitt der main.js des Adapters:

                    `mySensorsInterface.on('data', function (data, ip, port) {
                                    var result = processPresentation(data, ip, port); // update configuration if presentation received
                    
                                    if (!result) return;
                    
                                    for (var i = 0; i < result.length; i++) {
                                        if (result[i].type === 'set') {
                                            // If set quality
                                            if (result[i].subType == 77) {
                                                for (var id in devices) {
                                                    if (devices[id].native &&
                                                        (!ip || ip == devices[id].native.ip) &&
                                                        devices[id].native.id      == result[i].id &&
                                                        devices[id].native.childId == result[i].childId) {
                                                        adapter.log.debug('Set quality of ' + (devices[id].common.name || id) + ' ' + result[i].childId + ': ' + result[i].payload + ' ' + typeof result[i].payload);
                                                        adapter.setState(id, {q: typeof result[i].payload}, true);
                                                    }
                                                }
                                            } else {
                                                if (result[i].subType === 'V_LIGHT')  result[i].subType = 'V_STATUS';
                                                if (result[i].subType === 'V_DIMMER') result[i].subType = 'V_PERCENTAGE';
                    
                                                for (var id in devices) {
                                                    //adapter.log.info(devices[id].native.varType + ' /// ' + result[i].subType);
                                                    if (devices[id].native &&
                                                        (!ip || ip == devices[id].native.ip) &&
                                                        devices[id].native.id      == result[i].id &&
                                                        devices[id].native.childId == result[i].childId &&
                                                        devices[id].native.varType == result[i].subType) {
                    
                                                        if (devices[id].common.type == 'boolean') result[i].payload = !!result[i].payload;
                                                        adapter.log.debug('Set value ' + (devices[id].common.name || id) + ' ' + result[i].childId + ': ' + result[i].payload + ' ' + typeof 				   result[i].payload);
                                                        adapter.setState(id, result[i].payload, true);
                                                        break;
                                                    }
                                                }
                                            }
                                        } else if(result[i].type === 'internal') {`
                    
                    Wie ich es verstehe werden die empfangenen Daten von der Funktion "processPresentation" geparsed und als result zurückgegeben. Wäre es nicht sinniger das parsen in der main zu erledigen? Es werden nach meinem Verständnis alle empfangen Nachrichten immer durch diese Funktion geschleust. Ist aber mehr eine Frage der Struktur - funktionieren tut es so ja. 
                    
                    Die Verarbeitung der Sub-Typen der "Set"-Typ Nachrichten in der main machte mich stutzig. Ich vermute hier auch den Grund der fehlenden Datenupdates. Es wird hier zum einen in der API von mysensors nicht definierter Sub-Typ abgefragt (77 - vgl. [http://www.mysensors.org/download/serial_api_15](http://www.mysensors.org/download/serial_api_15)). Dieser Sub-Typ der Nachrichten Typ SET ist laut API 1.5 nicht definiert. Den Kommentar mit "if set quality" verstehe ich auch nicht... 
                    
                    Im else-Teil dieser Abfrage werden dann Subtypen abgeändert: 
                     ` ~~[quote]~~ if (result_~~[i]~~.subType === 'V_LIGHT')  result_~~[i]~~.subType = 'V_STATUS';
                    
                                                if (result_~~[i]~~.subType === 'V_DIMMER') result_~~[i]~~.subType = 'V_PERCENTAGE';____ `  ____Auch hier erschließt sich mir der Sinn nicht wirklich... Vielleicht verstehe ich aber auch den Code nicht... Der letzte Teil des Code Auszugs entzieht sich dann meinem Verständnis :) . Da die Struktur meines Sensor-Nodes in ioBroker stimmt und die erste Sensor-Child-ID auch geupdated wird, kann der Grund doch nur in der Behandlung der Sub-Typs des Nachrichtentyps "SET" liegen, oder?
                    
                    Vielleicht hilft uns die Diskussion ja auf den Bug zu kommen... Ich unterstütze gerne mit Tests, meldet euch einfach - habe ja zumindest einen Sensor-Node mit 2 Child-Sensors hier :) 
                    
                    VG
                    
                    Trident____[/i][/i][/i][/i] ` [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
                    
                    1 Reply Last reply Reply Quote 0
                    • T
                      Trident last edited by

                      Hallo zusammen,

                      ich habe Zeile 338 aus main.js auskommentiert. Jetzt klappt die Übermittlung der Zustände einwandfrei!

                      Viele Grüße

                      Trident

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

                        @Trident:

                        Hallo zusammen,

                        ich habe Zeile 338 aus main.js auskommentiert. Jetzt klappt die Übermittlung der Zustände einwandfrei!

                        Viele Grüße

                        Trident `
                        Was passiert, wenn du diese Zeile mit

                         `if (devices[id].common.type == 'boolean') {                                        
                           result[i].payload = result[i].payload === 'true' || result[i].payload === true || result[i].payload === '1' || result[i].payload === 1;
                        }`
                        ersetzt?[/i][/i][/i][/i][/i]
                        
                        1 Reply Last reply Reply Quote 0
                        • T
                          Trident last edited by

                          Jetzt schreibt der Adapter keine 0 und 1 mehr sondern korrekterweise "true" oder "false"

                          1 Reply Last reply Reply Quote 0
                          • T
                            Trident last edited by

                            Hi Bluefox,

                            könntest du die Auswertung der Presentation-Message noch deaktivieren, falls der Anlernmodus nicht aktiv ist?

                            VG

                            Trident

                            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

                            794
                            Online

                            31.9k
                            Users

                            80.3k
                            Topics

                            1.3m
                            Posts

                            7
                            57
                            9677
                            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