Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. On(pattern, callbackOrId, value) -> Rückgabe: obj

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.4k

On(pattern, callbackOrId, value) -> Rückgabe: obj

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
22 Beiträge 3 Kommentatoren 4.4k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • carsten04C Online
    carsten04C Online
    carsten04
    Developer
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe folgendes Miniscript erstellt:

    function allLightsToggle(obj) {
        log(JSON.stringify(obj),'info');
    }
    on({id:'hm-rpc.0.BidCoS-RF.8.PRESS_SHORT',valNe:2}, function (obj) {
        allLightsToggle(obj);
    });
    

    Eigentlich wollte ich auf den channelName triggern. Das klappt aber nicht, da ich immer folgendes Objekt zurück bekomme:

    {"id":"hm-rpc.0.BidCoS-RF.8.PRESS_SHORT","common":{},"native":{},"channelId":null,"channelName":null,"deviceId":null,"deviceName":null,"enumIds":[],"enumNames":[],"newState":{"val":true,"ts":1436380502,"ack":true,"lc":1436376111,"from":"system.adapter.hm-rpc.0"},"oldState":{"val":true,"ts":1436380350,"ack":true,"lc":1436376111,"from":"system.adapter.hm-rpc.0"}}
    

    Ich dachte eigentlich, dass wie bei ccu.io unter channelName (bei ccu.io hiess es channel) der Name des Kanals zurückgegeben wird. Jemand eine Idee wo der Fehler liegen könnte?

    Beste Grüße

    Carsten

    1 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #2

      Was möchtest Du denn machen?

      Hilft das eventuell:

      http://forum.iobroker.org/viewtopic.php … hlen#p5497

      Beschreibung für den Javascript-Adapter:

      https://github.com/iobroker/ioBroker.ja … --selector

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • carsten04C Online
        carsten04C Online
        carsten04
        Developer
        schrieb am zuletzt editiert von
        #3

        Ich hatte unter ccu.io ein Script geschrieben, dass auf folgende Events getriggert hat:

        subscribe({channel:/^Alle Lichter( | Wohnzimmer | Kueche )(aus|an):[0-9]{1,2}$/}, function (obj) {
            allLightsToggle(obj);
        });
        

        Diese Syntax wollte ich eigentlich beibehalten, da auch bei iobroker Scripten laut Doku mit Regex bei der obj-Eigenschaft channelName gearbeitet werden kann. Nur wenn dauernd null zurückgegeben wird, greift natürlich der Trigger nie. Mit dem Selektor $(…).on(function(){}); kann ich den Aufruf meiner callback-Funktion auch erreichen. Bei der Logik in meinem alten Script bin ich aber auf die Rückggabe des channelName in obj angewiesen, weil dieser in der callback-Fkt. weiter ausgewertet wird. Ich würde nur ungerne die gesamte Logik komplett neu schreiben müssen und hab daher noch die Hoffnung, dass ich nur irgend eine Kleinigkeit übersehen habe.

        Beste Grüße

        Carsten

        1 Antwort Letzte Antwort
        0
        • carsten04C Online
          carsten04C Online
          carsten04
          Developer
          schrieb am zuletzt editiert von
          #4

          Hat denn niemand eine Idee?

          1 Antwort Letzte Antwort
          0
          • BluefoxB Offline
            BluefoxB Offline
            Bluefox
            schrieb am zuletzt editiert von
            #5

            @carsten04:

            Hat denn niemand eine Idee? `
            Es gibt keinen "channel" mehr, sondern "channelName" oder "channelId".

            Heißen deine Kanäle wirklich so? "Alle Lichter Wohnzimmer aus:10"

            1 Antwort Letzte Antwort
            0
            • carsten04C Online
              carsten04C Online
              carsten04
              Developer
              schrieb am zuletzt editiert von
              #6

              Hallo Bluefox,

              danke für Deine Antwort. Ja die Kanäle heissen wirklich so (HM-RCV-50). Hatte ich unter ccu.io als virtuelle Taster genutzt und hat auch super funktioniert. Ich hab schon kapiert, dass aus channel channelName geworden ist (hatte ich ja auch geschrieben). Mein Problem ist, dass das obj für die callback-Funktion bei der Eigenschaft channelName mir immer null zurückgibt und deswegen die Trigger nicht zünden. Schau mal in den obigen code-block, da ist die Ausgabe von JSON.stringify(obj) zu sehen. Ich kapier einfach nicht warum das obj.channelName = null ist, ich habe z.B. eigentlich obj.channelName = "Alle Lichter Wohnzimmer aus:10" erwartet. Ich hoffe ich habe mich einigermassen verständlich ausgedrückt.

              Beste Grüße

              Carsten

              1 Antwort Letzte Antwort
              0
              • carsten04C Online
                carsten04C Online
                carsten04
                Developer
                schrieb am zuletzt editiert von
                #7

                Wäre mal jemand so nett und könnte das folgende Miniscript:

                function allLightsToggle(obj) {
                    log(JSON.stringify(obj),'info');
                }
                on({id:'hm-rpc.0.BidCoS-RF.8.PRESS_SHORT',valNe:2}, function (obj) {
                    allLightsToggle(obj);
                });
                

                mal bei sich mit einer gültigen id ausprobieren und dann hier sagen, ob er ebenfalls bei der Ausgabe immer nur channelId":null,"channelName":null,"deviceId":null,"deviceName":null zurückbekommt, anstatt der erwarteten Werte.

                Danke

                Carsten

                1 Antwort Letzte Antwort
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  schrieb am zuletzt editiert von
                  #8
                  javascript-0	2015-07-10 19:45:55	info	"newState": {
                  javascript-0	2015-07-10 19:45:55	info	"enumNames": [],
                  javascript-0	2015-07-10 19:45:55	info	"enumIds": [],
                  javascript-0	2015-07-10 19:45:55	info	"deviceName": null,
                  javascript-0	2015-07-10 19:45:55	info	"deviceId": null,
                  javascript-0	2015-07-10 19:45:55	info	"channelName": null,
                  javascript-0	2015-07-10 19:45:55	info	},
                  

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Antwort Letzte Antwort
                  0
                  • carsten04C Online
                    carsten04C Online
                    carsten04
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    Danke für die Mühe. Ich glaube hier liegt noch ein Fehler vor. Habe gerade erst folgenden Beitrag http://forum.iobroker.org/viewtopic.php?f=22&t=854 von Headroom68 unter "ioBroker Fehler gefunden". Er hat das selbe Problem.

                    1 Antwort Letzte Antwort
                    0
                    • BluefoxB Offline
                      BluefoxB Offline
                      Bluefox
                      schrieb am zuletzt editiert von
                      #10

                      Muss jetzt funktionieren.

                      Danke fürs Fehlermelden. ;)

                      1 Antwort Letzte Antwort
                      0
                      • ruhr70R Offline
                        ruhr70R Offline
                        ruhr70
                        schrieb am zuletzt editiert von
                        #11
                        javascript-0	2015-07-11 07:29:39	info	}
                        javascript-0	2015-07-11 07:29:39	info	"enumNames": []
                        javascript-0	2015-07-11 07:29:39	info	"enumIds": [],
                        javascript-0	2015-07-11 07:29:39	info	"deviceName": "Küche Taster Säule",
                        javascript-0	2015-07-11 07:29:39	info	"deviceId": "hm-rpc.0.FEQ0060867",
                        javascript-0	2015-07-11 07:29:39	info	"channelName": "Küche Wandlampe rot",
                        javascript-0	2015-07-11 07:29:39	info	"channelId": "hm-rpc.0.FEQ0060867.1",
                        javascript-0	2015-07-11 07:29:39	info	"name": "Küche Wandlampe rot Taster links.STATE",
                        javascript-0	2015-07-11 07:29:39	info	},
                        

                        Adapter: Fritzbox, Unify Circuit
                        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                        1 Antwort Letzte Antwort
                        0
                        • ruhr70R Offline
                          ruhr70R Offline
                          ruhr70
                          schrieb am zuletzt editiert von
                          #12

                          Der Taster ist bei mir dem Raum "Küche" zugeordnet.

                          Müsste das nicht in enumNames auftauchen?

                          Adapter: Fritzbox, Unify Circuit
                          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                          1 Antwort Letzte Antwort
                          0
                          • carsten04C Online
                            carsten04C Online
                            carsten04
                            Developer
                            schrieb am zuletzt editiert von
                            #13

                            Hallo ruhr70,

                            das müsste eigentlich auch nach meinem Verständnis so sein. Da enumNames ja ein Array ist glaube ich, dass hier nicht nur der Raum (von enum.rooms), sondern auch Favoriten (enum.favotires) und Funktionsnamen (enum.functions) in der jeweilgen JSON-Struktur erscheinen müssten, falls diese bei dem zugehörigen STATE gesetzt wurden (gleiches müsste nach meinem Verständnis auch für die enumIds gelten).

                            @Bluefox: danke für die superschnelle Reaktion. Jetzt kann ich schon mal weiter scripten und meine ccu.io Portierung zu Ende bringen.

                            Beste Grüße

                            Carsten

                            1 Antwort Letzte Antwort
                            0
                            • BluefoxB Offline
                              BluefoxB Offline
                              Bluefox
                              schrieb am zuletzt editiert von
                              #14

                              @ruhr70:

                              Der Taster ist bei mir dem Raum "Küche" zugeordnet.

                              Müsste das nicht in enumNames auftauchen? `
                              Wenn du folgendes eingibst:

                              iobroker l e | grep FEQ0060867
                              

                              Sieht du was?

                              P.S. l - list, e - enum. Es geht auch "iobroker list enum"

                              1 Antwort Letzte Antwort
                              0
                              • BluefoxB Offline
                                BluefoxB Offline
                                Bluefox
                                schrieb am zuletzt editiert von
                                #15

                                @carsten04:

                                Hallo ruhr70,

                                das müsste eigentlich auch nach meinem Verständnis so sein. Da enumNames ja ein Array ist glaube ich, dass hier nicht nur der Raum (von enum.rooms), sondern auch Favoriten (enum.favotires) und Funktionsnamen (enum.functions) in der jeweilgen JSON-Struktur erscheinen müssten, falls diese bei dem zugehörigen STATE gesetzt wurden (gleiches müsste nach meinem Verständnis auch für die enumIds gelten).

                                @Bluefox: danke für die superschnelle Reaktion. Jetzt kann ich schon mal weiter scripten und meine ccu.io Portierung zu Ende bringen.

                                Beste Grüße

                                Carsten `
                                Bei mir ist z.B. enumIds = ["enum.favorites.Admin.Heizung","enum.functions.Heizung","enum.rooms.Kinderzimmer"]

                                1 Antwort Letzte Antwort
                                0
                                • ruhr70R Offline
                                  ruhr70R Offline
                                  ruhr70
                                  schrieb am zuletzt editiert von
                                  #16

                                  ich probier das nachher.

                                  d.h. was Du davor angegeben hattest b

                                  bin gerade auf einen "russischen" Geburtstag;-)

                                  Gesendet von iPhone mit Tapatalk

                                  Adapter: Fritzbox, Unify Circuit
                                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                                  1 Antwort Letzte Antwort
                                  0
                                  • carsten04C Online
                                    carsten04C Online
                                    carsten04
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #17

                                    @Bluefox:

                                    @carsten04:

                                    Hallo ruhr70,

                                    das müsste eigentlich auch nach meinem Verständnis so sein. Da enumNames ja ein Array ist glaube ich, dass hier nicht nur der Raum (von enum.rooms), sondern auch Favoriten (enum.favotires) und Funktionsnamen (enum.functions) in der jeweilgen JSON-Struktur erscheinen müssten, falls diese bei dem zugehörigen STATE gesetzt wurden (gleiches müsste nach meinem Verständnis auch für die enumIds gelten).

                                    @Bluefox: danke für die superschnelle Reaktion. Jetzt kann ich schon mal weiter scripten und meine ccu.io Portierung zu Ende bringen.

                                    Beste Grüße

                                    Carsten Bei mir ist z.B. enumIds = ["enum.favorites.Admin.Heizung","enum.functions.Heizung","enum.rooms.Kinderzimmer"]

                                    Hallo Bluefox,

                                    bei mir bleiben enumNames und enumIds weiterhin leer. Ich habe folgendes einfache Szenario getestet:

                                    function allLightsToggle(obj) {
                                        log(JSON.stringify(obj),'info');
                                    }
                                    
                                    on('hm-rpc.0.LEQ1226350.1.STATE',function(obj){
                                        allLightsToggle(obj);
                                        });
                                    

                                    Dabei ist LEQ1226350 ein 1fach Schaltaktor (HM-LC-Sw1-FM) der das Terrassenlicht schaltet und dem Raum Garten (enum.rooms) und dem Gewerk Licht (enum.functions) zugeordnet wurde.

                                    JSON.stringify(obj) liefert:

                                    2015-07-12 08:55:37.651  - info: javascript.0 script.js.Test: {"id":"hm-rpc.0.LEQ1226350.1.STATE","newState":{"val":true,"ts":1436684138,"ack":true,"lc":1436684138,"from":"system.adapter.hm-rpc.0"},"oldState":{"val":false,"ts":1436683871,"ack":true,"lc":1436683158,"from":"system.adapter.hm-rpc.0"},"common":{},"native":{},"channelId":"hm-rpc.0.LEQ1226350.1","channelName":"Schalter Terrassenlicht:1","deviceId":"hm-rpc.0.LEQ1226350","deviceName":"Schalter Terrassenlicht","enumIds":[],"enumNames":[]}
                                    

                                    und die Ausgabe von iobroker l e liefert an den relevanten Stellen:

                                    =====================================================================================
                                    rooms.Garten       (Garten)
                                    -------------------------------------------------------------------------------------
                                    hm-rpc.0.LEQ1226350.1
                                    
                                    =====================================================================================
                                    functions.Licht    (Licht)
                                    -------------------------------------------------------------------------------------
                                    hm-rpc.0.LEQ1226350.1
                                    
                                    

                                    Das sieht also alles soweit ganz gut aus, ausser das eben enumNames und enumIds leer bleiben.

                                    Beste Grüße

                                    Carsten
                                    721_sma-em.jpg

                                    1 Antwort Letzte Antwort
                                    0
                                    • carsten04C Online
                                      carsten04C Online
                                      carsten04
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #18

                                      Hallo,

                                      ich wollte das Thema noch einmal nach oben holen, da bei mir immer noch enumIds und enumNames leer bleiben, ich die Informationen in meinem Skript aber gut gebrauchen könnte. Ist das jetzt noch ein bekannter Fehler, oder mache ich noch irgendetwas falsch. Für Hinweise jedweder Art wäre ich very happy.

                                      Beste Grüße

                                      Carsten

                                      1 Antwort Letzte Antwort
                                      0
                                      • BluefoxB Offline
                                        BluefoxB Offline
                                        Bluefox
                                        schrieb am zuletzt editiert von
                                        #19

                                        Was passiert wenn du folgendes machst?

                                        var obj1 = getObject('hm-rpc.0.LEQ1226350.1.STATE', true);
                                        var obj2 = getObject('hm-rpc.0.LEQ1226350.1', true);
                                        
                                        log(JSON.stringify(obj1.enumIds));
                                        log(JSON.stringify(obj2.enumIds));
                                        
                                        
                                        1 Antwort Letzte Antwort
                                        0
                                        • carsten04C Online
                                          carsten04C Online
                                          carsten04
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #20

                                          Dann wird folgendes geloggt:

                                          javascript-0	2015-07-30 14:56:02	info	script.js.test1: ["enum.functions.Licht","enum.rooms.Garten"]
                                          javascript-0	2015-07-30 14:56:02	info	script.js.test1: ["enum.functions.Licht","enum.rooms.Garten"]
                                          

                                          Sieht also eigentlich ganz gut aus.

                                          und jetzt kommts: nachdem ich Dein Skript habe laufen lassen, habe ich noch einmal folgendes probiert:

                                          function allLightsToggle(obj) {
                                              log(JSON.stringify(obj),'info');
                                          }
                                          on({id:'hm-rpc.0.LEQ1226350.1.STATE',valNe:2}, function (obj) {
                                              allLightsToggle(obj);
                                          });
                                          

                                          mit folgender Ausgabe:

                                          {"id":"hm-rpc.0.LEQ1226350.1.STATE","newState":{"val":true,"ts":1438261226,"ack":true,"lc":1438261226,"from":"system.adapter.hm-rpc.0"},"oldState":{"val":false,"ts":1438259876,"ack":true,"lc":1438257205,"from":"system.adapter.hm-rega.0"},"common":{"def":false,"type":"boolean","read":true,"write":true,"role":"state","name":"Schalter Terrassenlicht:1.STATE"},"native":{"CONTROL":"SWITCH.STATE","DEFAULT":false,"FLAGS":1,"ID":"STATE","MAX":true,"MIN":false,"OPERATIONS":7,"TAB_ORDER":0,"TYPE":"BOOL","UNIT":""},"name":"Schalter Terrassenlicht:1.STATE","channelId":"hm-rpc.0.LEQ1226350.1","channelName":"Schalter Terrassenlicht:1","deviceId":"hm-rpc.0.LEQ1226350","deviceName":"Schalter Terrassenlicht","enumIds":["enum.functions.Licht","enum.rooms.Garten"],"enumNames":["Licht","Garten"]}
                                          

                                          Jetzt klappt es also, warum auch immer :P Falls Du eine Idee hast warum, würde mich das sehr interessieren. Ansonsten noch einmal Danke für dieses geniale System.

                                          Beste Grüße

                                          Carsten

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          530

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe