Mal wieder virtuelle Geräte - jetzt aber richtig!

Wenn ein Update von js vorgenommen wurde dann kann dieser Fehler durchaus auch damit zusammenhängen.

Schöner Artikel :+1:

Ich bin bei node-red-contrib-huemagic noch auf 2.6.1, da mache ich mal besser kein Update.

Hi,

Ich bin bei
node-red-contrib-huemagic auf 2.6.2 aber nicht auf der neusten.
Bei
node-red-contrib-homee 0.5.3

Da funktioniert es bei mir ohne Probleme.

Wie kann ich das wieder downgraden?

Als Laie doch eher eine Neuinstallation?

Wenn es wirklich daran liegt…

Du könntest versuchen über die Palette den huemagic Node zu deinstallieren und ihn dann über die Console in älterer Version neuzuinstallieren:

cd /opt/iobroker/iobroker-data/node-red/

npm install node-red-contrib-huemagic@2.6.1

Bei mir läuft noch die 2.2.3 :man_shrugging:

Und der Flow ist für den Hue Stripe Plus geeignet? Die Lichttemp fängt bei 0 und nicht bei 2000irgendwas an

Ja, du musst natürlich die MIN/MAX Werte an dein Leuchtmittel anpassen…

Läuft der huemagic node wieder?

Hi,
ich habe gerade mit nodered, iobroker … und dem ganzen Zeug angefangen. Ich möchte nun nodered mit dem homee anbinden. In den ganzen Anleitungen steht überall noch man solle den Beta-Node: node-red-contrib-homee@beta in nodered installieren. Ist das @beta mittlerweile obsolete und man installiert einfach die stable node-red-contrib-homee, die man auch offiziell bei nodered findet?

Dank euch schonmal.
Alex

Ja, die Stable 0.5.3 ist die aktuelle Version. Kann man ganz normal über die Palette installieren.

Alles klar, dank dir. :slight_smile:

@medicus07 Wie ist das eigentlich, muss die alte Beta-Version vorher gelöscht werden?

Sorry falls das irgendwo stand und ich überlesen haben sollte …

Eigentlich solltest du ein update durchführen können.
Sollte in der Palette dir das Node nicht angezeigt werden, dann würde ich es vorher löschen.
Alternativ kannst du es auch über die Konsole aktualisieren
VG

1 „Gefällt mir“

Hab den iobroker neu aufgesetzt … jetzt scheint es zu laufen. Allerdings nur solange ich keine weitere HUE in den Flow nehme. Lerne ich eine weitere Lampe z.B. Iris ein, kann ich entweder nicht mehr anlernen bzw. die HiH werden dunkel. Die IDs habe ich geprüft … sind nicht identisch.

Zusätzlich habe ich in den Logs jetzt das hier
(3446) 3 May 09:59:58 - [warn] [homeeDevice:Wohnzimmer Strip] using an object with id and value is deprecated.

Habe jetzt als erstes den Stripe drin. Bis auf die Tatsache, dass sich der flow und als HiH anders verhält als beim direkten Verbinden über den ZigBee-Würfel

Bei Original kann ich entweder eine RGB-Farbe über den Colourpicker oder über die Farbtemperatur auswählen. Beim Flow hab ich den Regler zur Farbtemperatur jetzt angepasst 2000 bis 6535K, aber wenn ich eine Farbe wähle, funktioniert er nicht mehr?

Hallo,
ich hoffe ihr könnt mir nochmal weiterhelfen. Ich stehe noch stark am Anfang mit Nodered, habe mir die diversen Tutorials angeschaut. Ich versuche mich gerade an der Anleitung homee und nodered Teil5 (https://youtu.be/rfK5o1by84s), ich versuche aus dem homee-api-node, einzelne Werte, in dem Fall den current_value (id 242) eine Tuer/Fenster-Kontaktes (node_id: 24) auszulesen.

Leider erhalte ich bei der function permanent den Fehler „TypeError: Cannot read property ‚id‘ undefined“.
Meine function sieht wie folgt aus:

if (msg.payload.attribute.id ===242)
{
    return{payload: msg.payload.attribute.current_value}
}

Das Object so:

{
    "id": 242,
    "node_id": 24,
    "instance": 0,
    "minimum": 0,
    "maximum": 1,
    "current_value": 0,
    "target_value": 0,
    "last_value": 1,
    "unit": "",
    "step_value": 1,
    "editable": 0,
    "type": 14,
    "state": 1,
    "last_changed": 1588532172,
    "changed_by": 1,
    "changed_by_id": 0,
    "based_on": 1,
    "data": ""
}

Hier habe ich auch schon diverse Varianten durchgespielt, komme aber nicht dahinter.
Vielleicht könnt ihr kurz drüber schauen und mir auf die Sprünge helfen?

Grüße
Alex

Richtig wäre:

if (msg.payload.attributeId ===242)
{
return{payload: msg.payload.targetValue}
}

Der Inject-Node mit GET:/nodes ist für den homee node gedacht… um den Status eines Gerätes zu ändern muss der wie folgt aussehen (als JSON):

{"attribute":{ "id": 242, "value": 1 }} oder {"attribute":{ "id": 242, "value": 0 }}

Das liegt am alten Syntax {„id“: 3000, „value“: 1} von @stfnhmplr Plugin, mit Version ab 0.4 musst du deine Flows anpassen:

{"attribute":{ "id": 3000, "value": 1 }}

Ist aber momentan nur ne Warnung, der alte Syntax funktioniert aber noch.

Für dein anderes Problem, habe ich mal meinen aktuellen Hue-Flow (RGB und CT) beigefügt. Es gab, wenn ich mich recht entsinne, eine Änderung am huemagic node, die eine Anpassung erfordert hat:

[{"id":"f9e480f8.bc7da","type":"function","z":"fd6d95c1.d70ae8","name":"Rückkanal on off mit Hex","func":"if (msg.payload.on === true ){msg.payload.on =1}else msg.payload.on=0; \nnode.send({payload:{\"attribute\":{\"id\":40,\"value\":msg.payload.on}}})\nnode.send({payload:{\"attribute\":{\"id\":41,\"value\":msg.payload.brightness}}})\nnode.send({payload:{\"attribute\":{\"id\":42,\"value\":msg.payload.colorTemp}}})\nif( msg.payload.hex){\nvar test = msg.payload.hex.split('');\nvar ausgabe = \"\";\numr(i = test[5]);\nZahl1 = ausgabe*1;\numr(i = test[4]);\nZahl2 = ausgabe*16;\numr(i = test[3]);\nZahl3 = ausgabe*256;\numr(i = test[2]);\nZahl4 = ausgabe*4096;\numr(i = test[1]);\nZahl5 = ausgabe*65536;\numr(i = test[0]);\nZahl6 = ausgabe*1048576;\nnode.send({payload: {\"attribute\":{\"id\":43,\"value\":Zahl1+Zahl2+Zahl3+Zahl4+Zahl5+Zahl6}}})}\nfunction umr(){\n    switch(i){\n\t\tcase \"1\": ausgabe =1;break;\n\t\tcase \"2\": ausgabe =2;break;\n\t\tcase \"3\": ausgabe = 3;break;\n\t\tcase \"4\": ausgabe= 4;break;\n\t\tcase \"5\": ausgabe= 5;break;\n\t\tcase \"6\": ausgabe = 6;break;\n\t\tcase \"7\": ausgabe =7;break;   \n\t\tcase \"8\": ausgabe = 8;break;\n\t\tcase \"9\": ausgabe = 9;break;\n\t\tcase \"a\": ausgabe =10; break;\n\t\tcase \"b\": ausgabe = 11; break;\n\t\tcase \"c\": ausgabe  = 12; break;\n\t\tcase \"d\": ausgabe =13; break;\n\t\tcase \"e\": ausgabe =14; break;\n\t\tcase \"f\": ausgabe =15; break;\n}}","outputs":1,"noerr":0,"x":970,"y":660,"wires":[["df58ab8c.748d18"]]},{"id":"9a77a77b.a4b6a8","type":"switch","z":"fd6d95c1.d70ae8","name":"","property":"payload.reachable","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":770,"y":660,"wires":[["f9e480f8.bc7da"]]},{"id":"df58ab8c.748d18","type":"homeeDevice","z":"fd6d95c1.d70ae8","virtual-homee":"","name":"Hue Schrank groß","nodeId":"40","profile":"1002","icon":"","attributes":"[{\"id\":40,\"node_id\":40,\"instance\":0,\"minimum\":0,\"maximum\":1,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"\",\"step_value\":1,\"editable\":1,\"type\":1,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":41,\"node_id\":40,\"instance\":0,\"minimum\":0,\"maximum\":100,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"%25\",\"step_value\":1,\"editable\":1,\"type\":2,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":42,\"node_id\":40,\"instance\":0,\"minimum\":153,\"maximum\":500,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"K\",\"step_value\":1,\"editable\":1,\"type\":42,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"\"},{\"id\":43,\"node_id\":40,\"instance\":0,\"minimum\":0,\"maximum\":16777215,\"current_value\":0,\"target_value\":0,\"last_value\":0,\"unit\":\"\",\"step_value\":1,\"editable\":1,\"type\":23,\"state\":1,\"last_changed\":12345555,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"7001020%3B16419669%3B12026363%3B16525995\"}]","x":190,"y":660,"wires":[["1fc8546a.3b07dc"]]},{"id":"c77e7d4a.1357f","type":"hue-light","z":"fd6d95c1.d70ae8","name":"Schrank groß","bridge":"606574ec.dd55ac","lightid":"15","colornamer":true,"x":600,"y":660,"wires":[["9a77a77b.a4b6a8"]]},{"id":"1fc8546a.3b07dc","type":"function","z":"fd6d95c1.d70ae8","name":"RGB Funktion","func":"if (msg.payload.attributeId === 43){\nvar zahl= msg.payload.targetValue;\nvar ausgabe =\"\";\nrest(i = zahl%16);\nzahl6 = ausgabe;\nzahl = Math.floor(zahl/16);\nrest(i = zahl%16);\nzahl5 = ausgabe;\nzahl = Math.floor(zahl/16);\nrest(i = zahl%16);\nzahl4 = ausgabe;\nzahl = Math.floor(zahl/16);\nrest(i = zahl%16);\nzahl3 = ausgabe;\nzahl = Math.floor(zahl/16);\nrest(i = zahl%16);\nzahl2 = ausgabe;\nzahl = Math.floor(zahl/16);\nrest(i = zahl);\nzahl1 = ausgabe;\n\nausgabe2 = zahl1+zahl2+zahl3+zahl4+zahl5+zahl6;\n    node.send({payload:{\"hex\":ausgabe2}});\n}\n\nfunction rest(){\n    switch(i)\n\t\t{\n\t\t    \n\t\tcase 1: ausgabe =\"1\";break;\n\t\tcase 2: ausgabe =\"2\";break;\n\t\tcase 3: ausgabe = \"3\";break;\n\t\tcase 4: ausgabe= \"4\";break;\n\t\tcase 5: ausgabe= \"5\";break;\n\t\tcase 6: ausgabe = \"6\";break;\n\t\tcase 7: ausgabe =\"7\";break;   \n\t\tcase 8: ausgabe = \"8\";break;\n\t\tcase 9: ausgabe = \"9\";break;\n\t\tcase 10: ausgabe =\"A\"; break;\n\t\tcase 11: ausgabe = \"B\"; break;\n\t\tcase 12: ausgabe  = \"C\"; break;\n\t\tcase 13: ausgabe =\"D\"; break;\n\t\tcase 14: ausgabe =\"E\"; break;\n\t\tcase 15: ausgabe =\"F\"; break;\n}}\n\nif (msg.payload.attributeId === 40){node.send({payload:{\"on\":msg.payload.targetValue}})}\nif (msg.payload.attributeId === 41){node.send({payload:{\"brightness\":msg.payload.targetValue}})}\nif (msg.payload.attributeId === 42){node.send({payload:{\"colorTemp\":msg.payload.targetValue}})}\n","outputs":1,"noerr":0,"x":400,"y":660,"wires":[["c77e7d4a.1357f"]]},{"id":"606574ec.dd55ac","type":"hue-bridge","z":"","name":"Philips hue","bridge":"192.168.1.121","key":"Z3DWJ60A6AEC25kscXtjl0rcLtomplDN6Qp7eufo","interval":"3000"}]

Ich muss hier leider @medicus07 widersprechen.
Da es hier um das API node und nicht das Device Node geht stimmt deine Funktion schon.
Du
Musst sie jedoch etwas erweitern, da es bei dieser Anwendung zu deinem Fehler kommen kann.
Deine Funktion regiert auf jede Nachricht von homee und diese sind nicht immer nur Attribute.
Wenn jetzt eine Nachricht kommt die nicht msg.payload.attribute ist sondern nur z.B. msg.paylod.user oder anderes dann kann deine Funktion nicht den Wert für msg.payload.attribute.id vergleichen. Durch den Vergleich mit der einer Zahl kommt es dem Fehler .

Probiere mal bitte folgendes.

if (msg.payload.attribute && msg.payload.attribute.id ===242)

Dadurch erreichst du das erst getestet wird ob der payload das Objekt Attribute enthält.
Sollte er das Objekt enthalten geht es weiter zum nächsten Schritt andernfalls wird die Funktion abgebrochen da der erste Punkt nicht erfüllt ist.

Teste das mal bitte.

VG Micha

2 „Gefällt mir“

Habs gesehen… war wohl gestern Abend zu klein und zu dunkel… :joy:

1 „Gefällt mir“

riesigen Dank an euch beide. :pray:
Genau das wars. War schon am zweifeln, warum das so mit dem Schema nicht ans laufen kommt. :exploding_head:
Aber deine Erklärung @Micha ergibt nat. Sinn. So komm ich erstmal weiter.

Grüße
Alex