Node Red - Hilfe-/Frage-/Ideen-/Austausch - Thread

Hier für die Node Red User eine Funktion zum ersetzen von Geräten in homeegrammen.

[
    {
        "id": "76e0d02a.6b828",
        "type": "inject",
        "z": "2fafa37e.5aa2cc",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "get:homeegrams",
        "payloadType": "str",
        "x": 260,
        "y": 780,
        "wires": [
            [
                "b4a088b.49bff78"
            ]
        ]
    },
    {
        "id": "38807a9c.1d3116",
        "type": "function",
        "z": "2fafa37e.5aa2cc",
        "name": "Attribute und Node ID ersetzen bei Trigger , Conditions und Actions",
        "func": "var nodeold = 1226;\nvar attributold = 3137;\n\nvar nodenew = 92;\nvar attributnew = 348\n\nif (Object.keys(msg.payload)[0] === \"homeegrams\"){\nvar hg = msg.payload.homeegrams;\nhg.forEach(function(hgs){\n    hgs.triggers.attribute_triggers.forEach(function(trigger){\n        if (trigger.node_id == nodeold && trigger.attribute_id == attributold){\n            \n        node.send({payload: \"PUT:homeegrams/\"+trigger.homeegram_id+\"/triggers/\"+trigger.id+\"?attribute_id=\"+attributnew});\n    \n        node.send({payload: \"PUT:homeegrams/\"+trigger.homeegram_id+\"/triggers/\"+trigger.id+\"?node_id=\"+nodenew})}\n    })\n    hgs.actions.attribute_actions.forEach(function(action){\n        if (action.node_id == nodeold && action.attribute_id == attributold){\n            \n        node.send({payload: \"PUT:homeegrams/\"+action.homeegram_id+\"/actions/\"+action.id+\"?node_id=\"+nodenew+\"&attribute_id=\"+attributnew})}\n    })\n    hgs.conditions.attribute_conditions.forEach(function(conditions){\n        if (conditions.node_id == nodeold && conditions.attribute_id == attributold){\n            \n        node.send({payload: \"PUT:homeegrams/\"+conditions.homeegram_id+\"/conditions/\"+conditions.id+\"?node_id=\"+nodenew+\"&attribute_id=\"+attributnew})}\n    })\n})\n}\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 580,
        "y": 700,
        "wires": [
            [
                "b4a088b.49bff78",
                "7b910a91.3b31b4"
            ]
        ]
    },
    {
        "id": "b4a088b.49bff78",
        "type": "homeeApi",
        "z": "2fafa37e.5aa2cc",
        "homee": "",
        "name": "homeeApi",
        "messageTypeFilter": [],
        "nodeFilter": null,
        "attributeFilter": null,
        "x": 540,
        "y": 780,
        "wires": [
            [
                "38807a9c.1d3116"
            ]
        ]
    },
    {
        "id": "7b910a91.3b31b4",
        "type": "debug",
        "z": "2fafa37e.5aa2cc",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 880,
        "y": 780,
        "wires": []
    }
]

In der Funktion müsst Ihr die alte und neue Node_ID sowie Attribut_ID eingegeben werden.
Danach ein Get:homeegrams an die Api senden und die funktion ersetzt in alle HG’s die ID’s.

Viel Spaß und Erfolg

4 „Gefällt mir“

Danke @Sofasportler & @ReneH, ich habe den Haken gesetzt leider keine Änderung. Im iobroker Log sieht man noch was komisches. Immer wenn er diese Syntaxfehlermeldung hat, verliert der homeeAPI Node die Verbindung und für ein Bruchteil einer Sekunde sind die virtuellen Geräten im echten homee zu sehen (in der IOS App).

Das muss ich mir morgen Mal in Ruhe angucken. Coole Sache auf jeden Fall!

Ist evtl eine blöde Anmerkung, aber warum stehen unter Deiner Geräte-ID im homeeApi node auch Buchstaben? Dürfen hier nicht nur Zahlen stehen??? :man_shrugging:

HI @Sofasportler, danke für den Hinweis. Gerade angepasst, leider werden immer noch die virt.
Geräte im echten homee ausgegraut.

Meine Versionen:
Node-Red Adapter auf dem iobroker: 2.1.0
Node JS: v12.21.0
node-red-contrib-homee: 0.8.1

image

Finden sich in den config Nodes noch irgendwelche Karteileichen?

Hast du mal versucht den aktuellen vh zu löschen (in den config nodes), dann deploy und dann einen neuen virtuellen homee anzulegen und mit deinen Geräten zu verknüpfen

Hi @medicus07, danke für den Tipp. API node (und alle zugehörigen Nodes) gelöscht, deployed. Refresh im Browser, Nodes neu angelegt, leider das gleiche Ergebnis

Ist der Fehler evtl. erst aufgetreten, seitdem Du diese Anpassung vorgenommen hast?
Habe jetzt nicht alle Topics gelesen…

Hallo zusammen,

werden die Node Red Anfragen hier eigentlich „besser“ gesehen, als in den einzelnen Themen?

Ich habe da nämlich eine Frage zum Thema Node Red und Sonos.

Evtl. kann sich das ja mal jemand ansehen?
https://community.hom.ee/t/sonos-tts-sprachausgabe-in-homee-nutzen-nodered-polly-webhooks/24335/23?u=shadow31

Danke vorab.

Hi, tatsächlich habe ich diese Änderungen gar nicht durchgeführt. Diese sind nicht verspflichtend, oder? Mein Verständnis war optional.

Wenn du den globalen Kontext aktivierst, dann schon :wink:

Mist

HI @medicus07,

Einstellungen in der settings hinzugefügt
den NR Adapter am IO gestoppt und neugestartet
API node wieder aktiviert/deployed.

MIr ist folgendes aufgefallen:
Ich habe mal ein virt. Gerät gelöscht, neu gesucht im virt. homee, neu hinzugefügt. Der war als einziger nicht ausgegraut.

Nach Minuten aber das gleiche Bild -> alle virt. Geräte sind wieder ausgegraut. Das passiert gleichzeitig mit diesem Fehler aus dem IO Log aus dem weiter oberen Post. Ich bin kurz davor den Pi platt zu machen. :face_with_symbols_over_mouth:

image

Nee ich hab das seit Anfang an ohne laufen - ohne Probleme

Also globaler context ist eingeschaltet, aber ohne speichern im Festspeicher.

1 „Gefällt mir“

Ich habe dasselbe Problem seit längerer Zeit. Meiner Erfahrung nach ist es egal, ob globaler Kontext mit und ohne Festplattenspeicher aktiviert ist.
Ich hatte nach dem ersten Auftreten des Problems alle Geräte neu eingelernt - dann war wieder Ruhe.
Nach dem letzten Update von NodeRed trat dasselbe Problem erneut auf.
Wenn hier also jemand einen Hinweis auf die Ursache „unseres“ Problems hat, wäre ich sehr dankbar.

Node.js 12.22.1
NodeRed 2.2.0
node-red-contrib-homee 0.8.1

Schön zu hören, dass ich nicht alleine bin (aber auch sorry).

Anyway, ich habe heute beim Versuch zu fixen mein NR geschrotet, jetzt überlege ich mir, ob und was ich mir neu aufsetze…:see_no_evil:

Home Assistent image gleich rauf machen und dort NR laufen lassen oder doch wieder iobroker + NR, wird ein laaanges Wochenende :coffee: :coffee:

Bei mir laufen alle drei separat in verschiedenen Images… bei Docker ist das allerdings auch relativ einfach.

Ist Geschmackssache, aber ich finde die Trennung der Systeme hat doch einige Vorteile… Wenn es z.B. mal Probleme gibt, hat man nur eine Baustelle.

Ich speichere überhaupt nicht den Wert und bei mir passt das alles.
Also sollte das nicht am Lokalen speichern liegen.

2 „Gefällt mir“

Der Haken ist optional. Man muss den globalen Kontext nicht nutzen. Im Gegenteil: Sollte man die Funktion nicht nutzen, sollte man den Haken weg lassen. Frisst nur Speicher.

Die beiden Sachen haben nichts miteinander zu tun. Der globale Kontext bezieht sich auf den API-Node und der homeeStorage ist nur für den Status der virtuellen Geräte. Hier werden z.B. der aktuelle Status (An/Aus, Helligkeit usw.) gespeichert und nach dem erneuten Start von Node-RED wieder ausgelesen. Somit hat man fast immer einen aktuellen Status des Geräts.

In dem kurzen Auszug ist leider nur zu erkennen, dass Node-RED abstürzt. Das ist auch die Erklärung warum die virtuellen Geräte ausgrauen. Der Fehler steht in der dritten Zeile. Die Zeilenangabe verwirrt mich aber etwas, Zeile 20 kann eigentlich nicht stimmen. Jedenfalls entsteht der Fehler durch ein nicht erfolgreiches parsen einer JSON Nachricht.
Sagt der Log sonst noch was? Bitte mal den ganzen Auszug einstellen und zusätzliche bitte die genutzte Version des Node-RED-Plugins angeben.

2 „Gefällt mir“

HI @stfnhmplr,

hier der Log.

Meine aktullen Versionen:
Node-Red Adapter auf dem iobroker: 2.2.0
Node JS: v12.22.1
node-red-contrib-homee: 0.8.1