NEWS
Fehler bei installation von Node Red (lodash@) siehe Bild
-
Hallo Matrox,
die paar Informationsfetzen reichen leider nicht zur Fehleranalyse aus.
Das Image komplett neu aufzuspielen war auch nicht wirklich nötig. Die gesamten IOBroker-Dateien werden alle nur lokal installiert.
Fangen wir mal mit den Basics an…
Welche Plattform?
Raspberry Pi, Banana, Windows, Mac usw.
Welches Betriebssystem in welcher Version?
Wenn Debian: Weezy oder Jessi?
Welche node.js-Version?
node -v
Welche npm-Version?
npm -v
Die aktuelle Version des node-red-Adapters installiert automatisch node-red 0.11.1, die noch etwas wählerisch bei der node.js Version ist. Eine Installation ist nur mit den Versionen 0.10.x - 0.12.x möglich. Erst neuere Versionen wie die aktuelle node-red-Version 0.12.4 erlauben auch node.js-Versionen bis 4.2.x. Dafür muss man aber die aktuelle node-red Version lokal im Adapterverzeichnis node-red mittels npm neu installieren.
Die Fehlermeldungen, die über die Oberfläche angezeigt werden sind leider stark verkürzt und zeigen nicht alle erforderlichen Informationen an.
Soweit es sich bei dem System um ein Linux-System handelt, bitte die folgenden Schritte genau so durchführen:
cd /opt/iobroker iobroker stop npm cache clean npm install iobroker.node-red
Und dann bitte die komplette Ausgabe hier posten.
Falls npm ohne Fehler durchläuft (warnings können meistens ignoriert werden), dann bitte node-red über die Konsole starten und die Ausgabe auch hier posten:
cd /opt/iobroker/node_modules/iobroker.node-red/ node /opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/red.js -v --settings /opt/iobroker/iobroker-data/node-red/settings.js
Falls es nur an der fehlenden i18next-client liegt, kann man die nachinstallieren.
Diese ist lokal unter dem node-red Adapter installiert. Hierfür muss das entsprechende npm install im richtigen Ordner aufgerufen werden:
cd /opt/iobroker/node_modules/iobroker.node-red/ npm install i18next-client
-
here we go:
raspi 2 B mit Debian: Weezy
node -v
v0.10.22
npm -v
1.3.14
es ist schon gelaufen…nach 5 mal hin und her....
habe aber um hier zu DEBUGen, noch mal deinstalliert und mach es nach deiner ANleitung..
-
log zu gross…also txt datei
933_log.txt -
login as: root root@192.168.111.97's password: Access denied root@192.168.111.97's password: Linux raspberrypi 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat Jan 9 14:30:00 2016 from work-station.fritz.box root@raspberrypi:~# cd /opt/iobroker/node_modules/iobroker.node-red/ root@raspberrypi:/opt/iobroker/node_modules/iobroker.node-red# node /opt/iobroker/node_modules/iobroker.node-red/node_modules/node-red/red.js -v --settings /opt/iobroker/iobroker-data/node-red/settings.js Welcome to Node-RED =================== 9 Jan 14:58:10 - [info] Node-RED version: v0.11.2 9 Jan 14:58:10 - [info] Node.js version: v0.10.22 9 Jan 14:58:10 - [info] Loading palette nodes 9 Jan 14:58:21 - [warn] Missing node modules: 9 Jan 14:58:21 - [warn] - node-red-contrib-webduino: board, led, dht, photocell, servo 9 Jan 14:58:21 - [info] Removing modules from config 9 Jan 14:58:21 - [info] Settings file : /opt/iobroker/iobroker-data/node-red/settings.js 9 Jan 14:58:21 - [info] User directory : /opt/iobroker/iobroker-data/node-red/ 9 Jan 14:58:21 - [info] Flows file : /opt/iobroker/iobroker-data/node-red/flows.json 9 Jan 14:58:21 - [info] Server now running at http://127.0.0.1:1880/ 9 Jan 14:58:21 - [info] Starting flows 9 Jan 14:58:22 - [info] [inject:Tick] crontab = */5 * * * * 9 Jan 14:58:22 - [info] Started flows
root@raspberrypi:/opt/iobroker/node_modules/iobroker.node-red# cd /opt/iobroker/node_modules/iobroker.node-red/ root@raspberrypi:/opt/iobroker/node_modules/iobroker.node-red# npm install i18next-client npm http GET https://registry.npmjs.org/i18next-client npm http 200 https://registry.npmjs.org/i18next-client npm WARN deprecated i18next-client@1.11.4: you can use npm install i18next from version 2.0.0 npm http GET https://registry.npmjs.org/i18next-client/-/i18next-client-1.11.4.tgz npm http 200 https://registry.npmjs.org/i18next-client/-/i18next-client-1.11.4.tgz i18next-client@1.11.4 node_modules/i18next-client root@raspberrypi:/opt/iobroker/node_modules/iobroker.node-red# root@raspberrypi:/opt/iobroker/node_modules/iobroker.node-red#
-
ok, nach den Ausgaben sollte alles korrekt installiert sein.
Ein paar Komponenten wünschen sich zwar eine neuere node.js Version, aber das sind nur warnings und die sollten keine Rolle spielen.
Die Module für nodes, die node-red beim Start anmeckert, sind noch nicht installiert. Sollte aber auch kein Problem sein.
Läuft node-red wie es soll?
-
ja…jetzt läuft es!!!
nur noch eine Frage!
kennst du eine gute quelle um zu "lernen" wie man die FUNKTION nodes programmiert...???
Stehe vor einer herausvorderung wie ich 2 values von ZWEI oder mehrern ioBroker objekten vergleichen kann und weiter im ioBroker als value oder status speicher...
komme einfach nicht drauf auch nicht mit beispielcodes von nodered.org
-
Die Dokumentation von node-red findest du auf http://nodered.org/docs/.
In einem function node kann man Javascript-Code reinschreiben.
Als input bekommt man von einem anderen Node wie z.B. einem Input-Node ein msg object übergeben.
Auf die Attribute des Objects kann man dann relativ einfach mit msg.[attributname] zugreifen.
Die Standardattribute die es meistens gibt sind msg.topic und msg.payload.
Als Ergebnis kann man dann 1 oder mehrere msg Objekte im return zurückgeben, die dann entsprechend zu einem oder eben mehrere andere Nodes als input gehen. Viel mehr gibt es zum function-Node eigentlich nicht zu sagen.
Zu den ioBroker-Nodes:
Node-Red ist eine Entwickung von IBM, die als Open Source bereitgestellt wird. Diese hat erstmal nichts mit ioBroker zu tun. Es gibt aber eine größere Anzahl von Nodes, die Node-Red mit anderen Anwendungen wie ioBroker integrieren. Diese Adapter sind aber nicht auf nodered.org dokumentiert sondern immer nur auf den jeweiligen Seiten der Entwickler, meistens auf der npm oder github-Seite. Bei dem ioBroker-Nodes gibt es ein wenig Doku hier http://www.iobroker.net/?page_id=166&lang=de.
Der normale node-red-Adapter enthält zwei Node-Typen:
ioBroker In: Informiert über Änderungen genau eines Werts. Das msg Objekt enthält dann
msg.payload = Wert. Wichtig: Wert ist immer vom Typ string und muss ggf. konvertiert werden.
msg.topic = ID des State
msg.timestamp = Zeitstempel des Events
msg.lastchange = Zeitstempel der letzten Wertänderung
msg.acknowledged = gibt an, ob der Wert bestätigt wurde.
ioBroker Out; speichert den Wert zu genau einer ioBroker ID
msg.payload = Wert
msg.topic = ID des State (wird nicht benötigt, wenn die ID direkt im Node über das Formular eingegeben wurde)
Problem mit dem Input Node ist, dass dieser nur dann ein msg Objekt erzeugt und somit den Flow startet, wenn sich etwas am ioBroker Objekt des states ändert. Dies ist z.B. der Fall, wenn jemand den Wert setzt oder bestätigt oder einfach überschreibt. So werden z.B. hm-rega states alle 30 Sekunden überschrieben und erzeugen somit in node-red alle 30 Sekunden einen neues msg.Objekt. Das liegt daran, dass der Adapter für die Logikschicht der Homematic als Default alle 30 Sekunden alle Werte pollt.
Die Werte unter hm-rpc oder vis werden nur dann aktualisiert, wenn sich wirklich ein Wert oder eine Eigenschaft des states ändert. Somit kann es sein, dass dies auch nach einem Neustart von iobroker überhaupt nicht passiert.
Wenn man nun zwei Werte aus ioBroker miteinander vergleichen möchte hat man erstmal das Problem, dass man mit den input-Node eigentlich nie beide Werte gleichzeitig hat. Das kann man umgehen, indem man sich die Werte im Object context.global zwischenspeichert (http://nodered.org/docs/writing-functions.html). context.global überlebt solange node-red läuft. Wenn die Instanz manuell oder automatisch durch den controller neu gestartet wird, sind alle Werte jedoch weg.
Oder man kann die Werte über den im Thread http://forum.iobroker.net/viewtopic.php?f=23&t=2028 vorgestellten get-Adapter holen.
Der ist aber noch nicht offiziell und somit vielleicht nicht die einfachste Art sich mit node-red anzufreunden.
-
ok…soweit verstanden...
NUR
wenn ich in ein node mit funktion 2 messages übergebe, woher weiss der node, was was ist?, die würden doch beide nacheinander da sein?!
-
Zwei Möglichkeiten:
Entweder direkt in zwei verschiedene Function Node leiten oder msg.topic auswerten.
9054_waschmaschine.jpg -
ok… danke!problem wir aber sein, dass (wie du beschriben hast) die werte nie gleichzeitig da sind (ohne sie global zu setzen), dadurch wird die Funktion die nachrichten nicht vergleichen können...eine von beiden ist ja nicht da :? ...oder?