NEWS
Array mit Objekten in iOBroker anlegen
-
@hackypaddy Lass Dir erst nochmal die Vorteile meiner Alternativstruktur erklären und dann auch nochmal die Frage, wenn Du alle 4 Partitionen auf einmal abfragst - kommt das nur manchmal vor, dass die Anlage nicht klar kommt und kannst Du dann ggf. auf diese Abfrage verzichten oder geht es grundsätzlich nicht?
Bei meiner Alternativstruktur kannst Du dann nämlich mit Wildcards (nachdem anfänglich erst mal alle Initialisiert wurde) - nur noch auf Änderungen reagieren und alle states auf einmal überwachen:
Da der Datenpunkt mit dem state immer gleich heißt - hast Du so immer den aktuellen Status - der Name wird eigentlich gar nicht gebraucht kannst ihn aber mit einer get-Node ggf. auslesen. Da hier der Name des Datenpunktes ebenfalls konstant ist, ist das hier natürlich von Vorteil
Wie gesagt den Originalnamen brauchst Du nicht. Im oberen Ast - hast Du im Topic ja den Pfad zur Originalquelle. Wenn Du unbedingt den Originalnamen als topic haben willst, dann holst Du ihn Dir via get Node.
Hier der Import
-
Das ist echt ne geile Idee. So baue ich das um.
Wegen der Abfragen: Es gehen maximal 2 zeitgleich. Lieber aber sequenziell hintereinander. Dann kommen die Antworten auch schneller.
4 Abfragen gehen garnicht… bricht ab. Entweder stürzt die Anlage ab oder der Node Server.
-
@hackypaddy sagte in Array mit Objekten in iOBroker anlegen:
Das ist echt ne geile Idee. So baue ich das um.
Wegen der Abfragen: Es gehen maximal 2 zeitgleich. Lieber aber sequenziell hintereinander. Dann kommen die Antworten auch schneller.
4 Abfragen gehen garnicht… bricht ab. Entweder stürzt die Anlage ab oder der Node Server.
Hier noch der Import - um die andere Struktur aufzubauen:
-
@hackypaddy sagte in Array mit Objekten in iOBroker anlegen:
Das ist echt ne geile Idee. So baue ich das um.
Wegen der Abfragen: Es gehen maximal 2 zeitgleich. Lieber aber sequenziell hintereinander. Dann kommen die Antworten auch schneller.
4 Abfragen gehen garnicht… bricht ab. Entweder stürzt die Anlage ab oder der Node Server.
Hast Du mal versucht mit einer payload die einzelnen Partitionen abzufragen, anstatt das in der Node fest zu verdrahten?
-
Ne, weil ich nichts genau weiß wie...
Ich schick Dir gleich mal mein Flow, wie er im Moment aussieht.Dann kannst Du das besser nachvollziehen.
-
Probiere doch mal wie ich gesagt habe die Partition nicht in der Node zu verwenden sondern mit der payload?
hast Du denn das schon versucht: https://forum.iobroker.net/post/1098790
Ich probiere parallel einen Flow zu erstellen, aber Du würdest Dir das Leben viel einfacher machen. Bitte probiere das erst aus.
-
hier mal mein Flow, wie ich ihn gerade verwende. Ziel wäre es, die einzelnen Bereiche nacheinander abzufragen. Erst Bereich 1, dann Bereich 2, usw.
[ { "id": "21ba77d9f363fc5c", "type": "tab", "label": "Secvest", "disabled": false, "info": "", "env": [] }, { "id": "7de9826e28d68b1d", "type": "split", "z": "21ba77d9f363fc5c", "name": "", "splt": "\\n", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "topic", "x": 690, "y": 220, "wires": [ [ "7ae37472e7b5ca96" ] ] }, { "id": "7ae37472e7b5ca96", "type": "change", "z": "21ba77d9f363fc5c", "name": "", "rules": [ { "t": "change", "p": "payload.name", "pt": "msg", "from": ".", "fromt": "str", "to": "", "tot": "str" }, { "t": "set", "p": "topic", "pt": "msg", "to": "\"0_userdata.0.Alarm.\" & payload.id & \".\" & payload.name", "tot": "jsonata" }, { "t": "set", "p": "payload", "pt": "msg", "to": "payload.state", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 730, "y": 300, "wires": [ [ "3f9d9626684a6018" ] ] }, { "id": "3f9d9626684a6018", "type": "ioBroker out", "z": "21ba77d9f363fc5c", "name": "", "topic": "", "ack": "true", "autoCreate": "true", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 720, "y": 380, "wires": [] }, { "id": "736b74f1fd7dfdd5", "type": "Secvest Status", "z": "21ba77d9f363fc5c", "name": "Bereich 1", "server": "5dc4b66ee70b8720", "partition": "1", "command": "zones", "x": 400, "y": 140, "wires": [ [ "7de9826e28d68b1d" ] ] }, { "id": "c9f81194989a2d11", "type": "inject", "z": "21ba77d9f363fc5c", "name": "Alle 45 Sek.", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": "1", "topic": "", "payload": "", "payloadType": "date", "x": 130, "y": 100, "wires": [ [ "736b74f1fd7dfdd5", "3149fd696d113580", "427ed92e5fcf9fa0", "a7ae4222d4fc65a0" ] ] }, { "id": "3149fd696d113580", "type": "Secvest Status", "z": "21ba77d9f363fc5c", "name": "Bereich 2", "server": "5dc4b66ee70b8720", "partition": "2", "command": "zones", "x": 420, "y": 200, "wires": [ [ "7de9826e28d68b1d" ] ] }, { "id": "427ed92e5fcf9fa0", "type": "Secvest Status", "z": "21ba77d9f363fc5c", "name": "Bereich 3", "server": "5dc4b66ee70b8720", "partition": "3", "command": "zones", "x": 400, "y": 260, "wires": [ [ "7de9826e28d68b1d" ] ] }, { "id": "a7ae4222d4fc65a0", "type": "Secvest Status", "z": "21ba77d9f363fc5c", "name": "Bereich 4", "server": "5dc4b66ee70b8720", "partition": "4", "command": "zones", "x": 390, "y": 320, "wires": [ [ "7de9826e28d68b1d" ] ] }, { "id": "5dc4b66ee70b8720", "type": "ABUS Secvest", "servername": "Secvest", "host": "192.168.10.121", "port": "4433", "user": "Alert", "password": "xxxx" } ]
-
@hackypaddy Ja trotzdem probiere es bitte -
Nimm einfach eine von den Secvest Nodes - mach dahinter eine Debug Node und schau ob Du mit
einer Inject Node mit einer payload die eine der 3. Partitions enthält abfragst?Wie gesagt es geht auch mit 4 Nodes - aber es ist einfach ÜBERFLÜSSIG, wenn der Entwickler anbietet, dass man mit einer payload die Partitionen einzeln abfragen kann.
-
@hackpaddy
Hast Du es probiert???
-
Ich bin noch dabei, aber so wie es aussieht, funktioniert das nicht...
-
@hackypaddy dann probiere es mal mit den beiden Inject Nodes und schau ob da was rauskommt.
In der Node löscht Du Command und Partition bitte.
-
So nachdem ich von Dir leider keinen Response bekomme, und das eigentlich gehen müsste, habe ich Dir hier nun einen Flow gebastelt - der den Status abfragt und mit dem ich Deine Secvest Nodes simuliert habe
Die Nachricht kommt nur raus, wenn der Status OK ist.
Du musst aber vorher in der Statusermittlung die ID der Nodes in die Switch Node eintragen. Wenn Du das mal durchgespielt hast hier mit diesem Flow - dann wirst Du es auch auf den realen Flow umsetzen können:
Vorerst ist das Thema aber für mich damit erst mal abgeschlossen.
-
Wow, danke.
Ich bin grad unterwegs, deshalb kann ich das nicht so schnell durchtesten...Wenn ich nachher zuhause bin, schau ich mir Deinen Flow mal an und versuche den zu verstehen.
Wahnsinn, vielen Dank für deine Arbeit!
-
@hackypaddy Wie gesagt, wenn Du das mit der payload und den Einzelabrufen in einer Node machen kannst, dann hätte ich mir diese Arbeit sparen können.
-
Ne das geht ja nicht, also in einer Node.
-
@hackypaddy Lt. Beschreibung muss das aber gehen.
-
ich bekomm da nichts raus.
Hab mir gerade mal Dein Konstrukt angeschaut (auf dem Handy). Meine Herren, mir raucht der Kopf. Ich setz mich da nachher mal ran und versuch das alles irgendwie zu verstehen. -
Ich hab jetzt 3 Stunden probiert, und es funktioniert nicht. Und dann fiel es mir wie Schuppen von den Augen, als ich die Beschreibung nochmal genau durchgelesen hab...
Du hast den Command Baustein gemeint. Ja, diesen kannst per payload steuern und dort auch die einzelnen Partitionen abgeben. Aber diesen Baustein nutze ich nicht. Mit diesem Baustein steuert man die Anlage (scharf, unscharf, teilscharf).
Ich nutze nur den Status-Baustein. Dieser ließt die einzelnen Partitionen aus, gibt dann die Zonen aus und dort den Status (auf / zu).
Deshalb hat das vorhin auch nicht funktioniert.
-
@hackypaddy Ok dann kannst Du Dir ja meinen Flow im Genauen anschauen. Kurzfristig kannst Du die Nodes ja hintereinanderschalten und ggf. einfach noch eine delay Node dazwischen machen - wenn Dir meine Lösung zu kompliziert ist.