Node-Red als Frontend

Begonnen von Master_Nick, 26 Oktober 2017, 13:07:28

Vorheriges Thema - Nächstes Thema

Master_Nick

;-) Naja was anderes... es ist eine Ergänzung.

Ich nutze halt sehr viele Geräte die auf MQTT ihre Infos verbreiten (publishen). Daher bietet es sich einfach an diesen Datenstrom mit zu hören und darauf auch zu publishen um Dinge zu erreichen.

Die Geräte selbst sind alle auch per FHEM schaltbar. Also mein Node Red ist 100% optional - ist es nicht an geht dennoch alles.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

SamNitro

Stimmt in Sachen MQTT ist NodeRed sehr einfach gestrickt. Aber wenn man NodeRed mal Neu Startet stimmen die schaltzustände nicht mehr. Das ist bei FUIP anders. Und ja du hast hast recht FUIP ist rein zur visualisierung da.
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

Master_Nick

Zitat von: SamNitro am 28 Februar 2019, 14:45:55
Stimmt in Sachen MQTT ist NodeRed sehr einfach gestrickt. Aber wenn man NodeRed mal Neu Startet stimmen die schaltzustände nicht mehr. Das ist bei FUIP anders. Und ja du hast hast recht FUIP ist rein zur visualisierung da.

Das stimmt nicht. Dann hast du es falsch eingestellt oder nutzt MQTT nicht so wie man es dafür nutzen müsste.

Bei mir ändert sich rein gar nichts durch einen Neustart von NodeRed ODER dem MQTT Broker.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

SamNitro

Zitat von: Master_Nick am 28 Februar 2019, 14:52:46
Dann hast du es falsch eingestellt oder nutzt MQTT nicht so wie man es dafür nutzen müsste.

Dann kann natürlich sein. Aber mir fehlen dann die Anleitungen dazu. Und mein Englisch.... naja für hier und da reicht es, aber für mehr dann auch nicht.
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

hecky456

Hallo zusammen,

leider komme ich mit der Verbindung zwischen node-red und fhem über MQTT nicht weiter. Habe alles nach den super Tutorials von Matthias eingerichtet und über mqtt.fx klappt auch alles, also schalten von fhem devices und empfangen von Nachrichten klappt auch.
Wenn ich in node-red dann einen mqtt Mode hinzufüge und den fhem Broker eintrage steht zwar verbunden da aber es kommen keine Nachrichten an und senden geht auch nicht. Die Nachrichten kommen weder in fhem noch in mqtt.fx an.

Vielen Dank für eure Unterstützung!
Felix

Master_Nick

#110
Moin,

dann gehe ich davon aus (habe die Tutorials nur mal angelesen und mich gegen die Nutzung entschieden), du hast einen großen (nennen wir es) Kanal in dem ALLES von FHEM in MQTT rüber gespamt wird?
Das habe ich so nicht umgesetzt, da es aus meiner Sicht absolut unnötig ist ALLE infos von FHEM in MQTT zu haben.


Ich nutze in FHEM:

Modul 00_MQTT.pm -> für das einbinden des Brokers (Mosquitto bei mir)

Modul 10_MQTT_GENERIC_BRIDGE -> für die Steuerung und gezielte Übetragung von nicht nativen MQTT Devices (also soweit erstmal alles was in FHEM irgendwie geschaltet werden kann - bin  damit noch an keine Grenze gestoßen)

Modul 10_MQTT_DEVICE -> für die Nutzung von nativen MQTT Geräten

Mein NodeRed hängt dann einfach am Mosquitto und ist absolut optional. D.h. ist es abgeschaltet oder nicht verfügbar hat es keine Auswirkungen für die Funktionalität meiner Steuerung. Lediglich kann man dann halt nicht komfortabel im Flur am Touchscreen oder am Handy Devices Ein/Ausschalten oder in Zustände schalten.

Dabei habe ich aber dann auch wirklich nur die für mich interessanten Readings von FHEM an MQTT oder MQTT an FHEM übetragen.
Stumpf gesagt (es gibt ausnahmen) 3 Stück pro nativen MQTT Device (Online, Set und Status Topic). Bei einem nicht nativen sind es meist sogar nur 2 (Status und Set).


Aber mal zurück zu deiner Frage :-D

mqtt.fx <- ? Sagt mir jetzt mal ad hoc gar nichts - wo kommt das vor?

Hast du in MQTT denn mal die Debug Node genutzt und verifiziert, dass wirklich nix ankommt?
Schalte dich mal mittels Shell auf deinen Broker und schaue ob wirklich gar nichts passiert.
Bei Mosquitto wäre das: mosquitto_sub -h localhost -t '#' -v (sofern keine auth konfiguriert)
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hecky456

#111
Hey, danke für deine schnelle Unterstützung!
Nicht ganz, nur die Infos der Devices bei denen ich das userattr. MqttName und MqttRoom gesetzt habe. Das Topic baut sich dann aus dem Raum und dem Namen zusammen und darunter werden dann alle readings des device verschickt.
Finde die Lösung eigentlich ganz elegant. (Muss allerdings gestehen, hab mir die Generic Bridge mangels Zeit ach noch nicht angesehen).
Ich gehe davon aus, dass das Problem eigentlich nichts mit fhem zu tun hat da ich über MQTT.fx (ist ein mqtt Client mit GUI) mit fhem kommunizieren kann (subscribe und publish geht, kann auch fhem devices schalten, daher eigentlich etwas Off topic, sry!
Aber ich glaube ich habe noch ein generelles Verständnis Problem... Auf dem Debian auf dem node-red läuft (ein proxmox Container), läuft da auch ein mqtt broker wenn ich da über apt-get Install mosquitto mosquitto-clients mqtt installiere? Im mqtt node in meinem flow trage ich doch den fhem mqtt broker ein oder? Da steht dann auch connected aber auf dem debuggen node der hinten dran hängt kommt keine einzige Nachricht an.

Mit mqtt.fx habe ich alle topics subscribed und da sehe ich alle Nachrichten von fhem aber keine von node-red wenn ich da mit einem mqtt Output node etwas subscribe...

Könnte vielleicht jemand seine Konfiguration des mqtt Eingangs nodes posten?

Sry, habe node Red gerade erst installiert und mit mqtt noch keine Erfahrung!

*EDIT:

Bin jetzt etwas schlauer. Wenn ich mich mit mqtt.fx auf dem Broker des Containers verbinde auf dem auch node-red läuft sehe ich alle Nachrichten die ich aus Nodered publishe und wenn ich über mqtt.fx etwas publishe kommt das auch im Debugfenster in node-red raus. Also sind die nodes mit dem lokalen Broker auf dem node-red Container verbunden obwohl ich in den nodes die IP des fhem Containers angegeben habe. Kann mir das jemand erklären? Und vorallem wie bekomme ich node-red dazu sich zu einem Broker auf einem anderen Rechner im Netz zu verbinden?

Wäre für Hilfe wirklich sehr dankbar...

Viele Grüße

Master_Nick

#112
Moin  :o

Vom Gefühl her, ich kann aber auch irren, musst du mal sortieren was was ist und es korrekt benennen.
Lokaler Borker, dann einer im Proxmox? Wieso überhaupt mehrere?

Du brauchst genau einen MQTT Server (auch genannt Broker). Eben dieser wird in FHEM als Broker definiert.
Sofern dein NodeRed diesen Broker finden kann und auch darauf publishen kann, sollte es für FHEM wenn dort im Broker "active" steht es ebenso gehen.

Generell ist aber Container spezifisches hier nicht korrekt aufgehoben - und es "klingt" ein wenig danach, als würde da irgendwo was mit den Zugriffen nicht passen.
Eventuell erstmal ohne versuchen?

"Und vorallem wie bekomme ich node-red dazu sich zu einem Broker auf einem anderen Rechner im Netz zu verbinden?"
Indem du die IP und den Port als Broker nutzt. Man gibt ja mindestens einmal beim verwenden der ersten MQTT Node den Server an. Dort dann die korrekte IP eintragen. Alternativ nun über eine Node in die Eigenschaften zum Server und ändern.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

hecky456

Hi,

danke, dass du dir trotzdem die Zeit nimmst!

Ich würde behaupten, dass das erstmal nichts mit der Container Umgebung zu tun hat, das hat sich bisher alles verhalten wie "normale" einzele Debian Rechner...

Nochmal etwas ausführlicher:

mosuitto ist doch ein mqtt-Broker oder? Bei den ganzen Installationsanleitungen von node-red wird doch überall mosuitto und auch mosuitto-clients installiert und auch in den "Autostart" gepackt. Damit läuft doch lokal auf dem Container von node-red auch ein mqtt-Broker... Jetzt hatte ich zuvor aber schon unter fhem ein mqtt device angelegt um einen Sonoff TH16 einzubinden, also läuft auf meinem fhem Container auch schon ein mqtt-Broker (auch moquitto). Jetzt dachte ich, ich verbinde node-red einfach mit dem mqtt-node auf den Broker der auf meinem fhem Container läuft. Wenn ich jetzt die IP des fhem Containers in den mqtt-node eintrage, werden die Nachirchten trotzdem auf dem lokalen Broker (auf dem node-red Container) gepublished...

Die einzige Idee die ich jetzt noch hätte ware, dass node-red ein Problem mit "ungesicherten" externen Brokern hat da mein Broker keinen Benutzer und PW hat sondern noch offen ist. (Siehe https://cookbook.nodered.org/mqtt/connect-to-broker ganz unten "To connect to non-local, secured brokers, other MQTT Config node options will need to be set according to your broker's connectivity requirements.") Kann das ggf. jemand bestätigen?

Wie sehen denn eure Installationen von fhem und node-red aus? Läuft das alles auf einem System oder hat das ggf. noch jemand getrennt?

Vielen Dank und viele Grüße

Master_Nick

Moin,

"Installationsanleitungen für Node-Red" Mir scheint du hast da Tutorials die am Ende ein bestimmtest Ergebnis erreichen sollen.
Aber eine reine NodeRed Installationsanleitung würde nur NodeRed installieren.

Ja Mosquitto ist ein Broker -> MQTT Server
Clients für Mosquitto im Autostart würde mich arg wundern - mit denen kann man halt subscriben und publishen um mitzulesen oder werte zum Test auf Topics zu schreiben.

Und wo man in seinem LAN den Broker installiert ist total egal, solange die Maschine/VM auf der NodeRed läuft daran kommt. Es muss also nicht alles auf einer Kiste laufen.
Die Frage wäre ob du bei dir, da beide keine Fehler melden aber gegenseitig anscheind nicht die Payloads bekommen, zwei Broker hast - einen der von FHEM bedient wird einen der von NodeRed bedient wird. Das würde dann erklären warum du nichts zwischen beiden hin und her bekommst.

Du brauchst definitiv keine gesicherte Verbindung für NodeRed. Es funktioniert ohne jede Auth aber genauso auch mit.

Meine Installation:

FHEM in einem Container
NodeRed in einem Container
Mosquitto in einem Container

Alle haben eigene IPs und die notwengiden Ports für die anderen Container zugänglich und je nach dem für Clients aus dem LAN.
Rancher K8s Cluster mit nanoCUL (a-culfw) | IObroker | IT(V1&V3), IT-PIR, THGR122NX |Co² | alexa-fhem | WOL | NFC | Harmony UltimateHub | Anwesenheitserkennnung | Roomba | 10" Touch mit Node-Red | SonOff S20 | SonOff Touch | SonOff Dual | Rolladen | Und ganz viel anderes tolles Gerödel.... ;-)

FHEm2005

Ich versuche mal hier eine Antwort auf meine Frage zu bekommen. Vielleicht gibt es Jemanden, der sich damit besser auskennt als ich. Ich weiß, dass dies hier kein Node-Red Forum ist, kenne aber keinen deutschsprachigen Anlaufpunkt. Deshalb vorab: Sorry

Situatuion: Ich bekommen über Fhem -> Mqtt _node-red Statusänderungen meiner Sonos-Box, die im Dashboard dargestellt werden sollen. Stationstasten mit Senderlogo sind im Desktop sichtbar und funktionsfähig. Problem: egal, wie groß ich den Wert von "size" wähle, die Größe des Senderlogos bleibt immer gleich. Die Original jpg_Datei ist 600px x 600px und wird auf schlappe 24px x 24px skaliert.

Hier der Code (Node-Red) für den Button:
[{"id":"62bf6e0.b0a5394","type":"ui_button","z":"e87bf2c.7a7039","name":"WDR1","group":"7fffe7a8.859468","order":14,"width":"2","height":"2","passthru":false,"label":"","tooltip":"","color":"","bgcolor":"","icon":"http://cdn-profiles.tunein.com/s25260/images/logog.jpg","payload":"play_mysonos","payloadType":"str","topic":"WDR1 LIVE - Dss junge Radio des WDR","x":710,"y":720,"wires":[["b590178c.a74248"]]},{"id":"7fffe7a8.859468","type":"ui_group","z":"","name":"Sonos","tab":"9a8f8e45.49d28","order":2,"disp":true,"width":"6","collapse":false},{"id":"9a8f8e45.49d28","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

Optimal wäre ein 70px x 70 px großes Senderlogo bei einer Bittungröße von 2 x 2..

Ich habe bereits 5 Tage Internetsuche hinter mir. Das Thema kam immer wieder auf die fa- und material-Icons aus. Niemand packt mal ein Logo auf den Button und verändert die Größe.

Herzliche Grüße

Eberhard

Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

SamNitro

#116
Zitat von: FHEm2005 am 20 Dezember 2019, 10:00:19

Optimal wäre ein 70px x 70 px großes Senderlogo bei einer Bittungröße von 2 x 2..


Ich bin jetzt auch kein Profi, aber vielleicht hilft dir das hier was weiter...


EDIT: Topic hinzugefügt


[{"id":"1765cb2d.8e1b35","type":"ui_template","z":"9aeee83f.213f8","group":"1ffd0ef1.ff17a1","name":"","order":2,"width":"2","height":"2","format":"<button ng-click=\"send({payload: 'play_mysonos', topic: 'WDR1 LIVE - Dss junge Radio des WDR'})\">\n    \n<img src=\"http://cdn-profiles.tunein.com/s25260/images/logog.jpg\" width=70>\n\n</button>","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":280,"y":600,"wires":[["be0c6cd6.1316d"]]},{"id":"1ffd0ef1.ff17a1","type":"ui_group","z":"","name":"Sonos","tab":"64c00bee.33251c","order":2,"disp":true,"width":"6","collapse":false},{"id":"64c00bee.33251c","type":"ui_tab","z":"","name":"Home","icon":"dashboard","order":1,"disabled":false,"hidden":false}]
(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

SamNitro

Dann erstelle mal ein ,,template" mit folgendem Inhalt:



<button ng-click="send({payload: 'play_mysonos', topic: 'WDR1 LIVE - Dss junge Radio des WDR'})">
<img src="http://cdn-profiles.tunein.com/s25260/images/logog.jpg" width=70>
</button>

(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)

FHEm2005

Hallo SamNitro,

anfangs dachte ich: "Geht nicht!". Der Button war aber in ein anderen Tab gerutscht. Jetzt wird wenigstens etwas angezeigt. Die Größe war bei 2x2 mit den vorgegebenen 70 px völlig gaga. Ich meinte 40px. Einige kosmetische Feinheiten muss ich noch bereingen. Wenn ich Probleme habe melde ich mich. Wenn allse passt ebenso

Danke bis hierhin.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM

FHEm2005

Hallo SamNitro,

Die Buttons sehen genau so aus, wie ich es wollte´- dank Deiner Initialzündung. Das Template hat jetzt im Bereich "Template" folgende finale Definition:

<button ng-click="send({payload: 'play_mysonos', topic: 'WDR1 LIVE - Das junge Radio des WDR'})" style="border:none;background-color:#4b7930;width: 92px; height: 72px;">
   
<img src="http://cdn-profiles.tunein.com/s25260/images/logog.jpg" width=60 style="margin-top:5px;">

</button>


Die Werte für 'topic und 'src' habe ich aus der fhem-Definition der Sonos-Box ausgelesen. 'topic' steht unter dem Reading 'Favourites' unter 'title' bzw. 'cover'  (Für die, die ebenfalls auf der Suche sind. - Sind wir nicht alle auf der Suche...  ;) ;)

Unten habe ich das UI als Bild angehängt. Gesteuert werden: Mute on/mute off, Start/Stop, Volume Up, Volume Down und die daruter befindlichen Stationstasten. An der Rückmeldung vom Sonos-System arbeite ich noch.

Danke dir nochmal.

Gruß Eberhard
Raspi3: FHEM, CULV3 (V1.61), EnOcean Pi 868, nanoCUL433, HUE-Bridge; Raspi4: Node-red, MQTT, Gaszähler auslesen mit ESP32-CAM