IPSymcon Node-Red Integration?

Hallo,

hat schon jemand einen IPSymcon Node für Node-Red gebaut oder IPS anders an Node-Red angebunden?

Tommi

Wäre ja fast noch cooler man könnte NodeRed innerhalb von IP-Symcon nutzten. Das wäre dann so was wie der Workflow Editor in IPS Studio.

Also geschrieben hab ich jetzt selber da nix aber Du kannst ja fürs erste einfach eine HTTP Request Node als Output nehmen und an einen Webhook in IPS schicken.

Hallo,

oder mit einem Websocket Server. Angeschaut habe ich es mir auch noch nicht, aber ich meine das geht.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Ich habe, so ein Zufall, seit Freitag Node Red auf meinem Raspberry parallel zu IPS im Einsatz. Die Anbindung kommt darauf an, was du machen möchtest, am einfachsten ist wahrscheinlich JSON-RPC, wenn du etwas schalten willst. Um Daten aus IPS zu bekommen habe ich bestimmte Daten einfach per Event („bei Änderung“) als „Push“ an einen http-Input gehängt, damit stellt Node-Red quasi einen Web-Service zur Verfügung. Da IPS nur Daten sendet wenn sie sich geändert haben ist es auch kaum Belastung. Ich habe damit zum Spaß innerhalb von Sekunden ein Mini-Dashboard aufgebaut, die Node-Red-Nodes „Dashboard“ sind nett, 2x Klicken und man hat ein Live-Chart vom Strom-Verbrauch in meinem Fall :smiley:

Node Red is aber KEIN Workflow-System, dafür bringt es nicht die nötigen Stati und Behandlungen etc. mit. Es sind nur Flows, kann also dein Scripten vereinfachen… oder wie in meinem einen Fall sogar Hardware in IPS integrieren die ich damit nicht hin bekommen habe.

Hallo Hagbard235 ,

könntest du mir kurz schildern wie genau du den „Push“ aus IPS erzeugst und den dann bei Node Red empfängst.
Ich brauch einfach mal einen Denkanstoß.

Viele Grüße

Thomas

Hi,

hier mein Test-Beispiel in IPS:

$filename = "http://192.168.178.xxx:1880/debug?Test=".GetValueFloat(xxxxx);

$contents = Sys_GetURLContent($filename);

und in Note-Red einen Node vom Typ http-Get mit der URL „/debug“
Davon dann auf einen json-Node um das zu konvertieren und in weiter auf ein function-Node mit folgendem Inhalt

var newMsg = { payload: msg.req.query.Test };
//JSON.stringify(newMsg);
return newMsg;

um den Wert mit dem Bezeichner Test auszulesen und weiter zu reichen… damit kannst du dann ganz normal weiter arbeiten… hört sich jetzt schlimmer an als es ist…
Hier noch mal ein Bild…

Danke. Teste ich auf jeden Fall. Finde Node Red für bestimmte Aufgaben echt gut.
hab mir eine Abfrage meines Unifi Controllers gebaut ( ist noch nicht fertig ) und denke da
wird sich mit Alexa und co noch eine Menge ergeben.

Werde berichten wie ich voran komme.

Nice WE Thomas

Hallo,

ich habe mir einmal testweise nach dem Beispiel von Hagbard235 einen Wert ins Dashboard geholt.
Das klappt soweit ganz gut, aber ich habe ein Problem mit dem Dezimaltrennzeichen.

Mein IPS gibt den Float-Wert mit einem Komma aus, node-red erwartet aber anscheinend einen Punkt als Trennzeichen.

Im Dashboard sieht das dann so aus:
Gauge.jpg

unten im Bild habe ich den Wert als Textfeld anzeigen lassen

Kann ich IPS dazu bringen, mir diesen (und nur diesen) Wert mit Dezimalpunkt auszugeben, oder kann man node-red dazu bringen, auch Dezimalkommas anzuerkennen?

Gruß
Frank

ich benutze immer das:

$str = number_format($val, 4, '.', '');

gibt die Float $val mit 4 Nachkommastellen aus, verwendet den ‚.‘ als Dezimaltrenner und keinen Trenner für Tausender. Doku siehe hier

Strings, die ich in URL’s übergebe, sicher ich immer mit rawurlencode() ab (hier).

Sofern du einfach einen Float zu einen String konvertierst; wie bei echo oder auch durch das verketten mit einem anderen String, gibt PHP das mit deinem localen (deutschen) Einstellungen aus.
Also mit Komma.

Es sollte aber mit sprintf möglich sein, den Wert immer mit Punkt auszugeben.

PHP: sprintf - Manual

Beispiel:


$filename = 'http://192.168.178.xxx:1880/debug?Test='.sprintf("%F",GetValueFloat(xxxxx));

Michael

Vielen Dank, es funktioniert beides. Im Dashboard ist alles richtig.

Jetzt bekomme ich aber immer eine Warnung in IPS:

12.04.2018 21:57:44 | ScriptEngine | Ergebnis für Ereignis xxxxx
<br />
<b>Warning</b>: Die Operation wird abgebrochen in <b>-</b> on line <b>2</b><br />

Mein Skript:

$filename ="http://localhost:1880/debug?test=".number_format(GetValueFloat($_IPS['TARGET'])/1000, 2, '.', '');
$contents = Sys_GetURLContent($filename);

Vielleicht doch schon zu spät für mich. :banghead:

Gute Nacht
Frank

Alles OK!

Wenn man schon keine Ahnung hat und Beispiele abschreibt, sollte man es auch richtig abschreiben.

Der „http-Response“ in node-red fehlte. :o

Danke nochmal an Alle.

Gruß
Frank

Hallo zusammen,

gibt es zu dem Thema schon etwas Neues? Eine einfachere Möglichkeit - ein Modul zB?

Gruß Steffan