Vorstellung: hm2mqtt & mqtt-smarthome
Moderator: Co-Administratoren
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Hallo Hobbyquaker
Vielen herzlichen Dank für die Antwort. 8181 war mein Problem, da ich mit Kanalnamen arbeite.
Nun läufts.
Schönes Weekend.
Stephan
Vielen herzlichen Dank für die Antwort. 8181 war mein Problem, da ich mit Kanalnamen arbeite.
Nun läufts.
Schönes Weekend.
Stephan
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Hallo hobbyquaker,
ich habe nun das Script 2x installiert:
Einmal im gleichen Gebäude hm2mqtt <=> Firewall <=> YAHM. Das hat prima funktioniert. Starte ich aber das Script über unsere VPN Verbindung: hm2mqtt <=> Firewall <=> VPN <=> Firewall <=> YAHM, dann scheint es noch ein Timing Problem zu geben. Auf den FW's habe ich auf jeden Fall keine geblockten Packete. Im Log von hm2mqtt sehe ich das:
Zudem geht das Homematic WEB Interface in die Knie und reagiert nicht mehr auf Eingaben.
Hast Du eine Idee, was das sein könnte? Ist die ganze Kommunikation so zeitkritisch, dass das über Remote gar nicht geht?
Meine Idee ist halt, dass unsere Visualisierung inkl. hm2mqtt Scripte auf einem einzigen Server läuft und die Daten bei den Homematic Zentralen abholt. Sie werden dann auf einem Node-Red Dashboard zusammengestellt. Sollte das nicht gehen, installiere ich halt das hm2mqtt Script jeweils lokal. Gibt ein wenig mehr Verwaltungsaufwand, aber geht auch.
Vielen Dank für Deine Antwort.
Stephan
ich habe nun das Script 2x installiert:
Einmal im gleichen Gebäude hm2mqtt <=> Firewall <=> YAHM. Das hat prima funktioniert. Starte ich aber das Script über unsere VPN Verbindung: hm2mqtt <=> Firewall <=> VPN <=> Firewall <=> YAHM, dann scheint es noch ein Timing Problem zu geben. Auf den FW's habe ich auf jeden Fall keine geblockten Packete. Im Log von hm2mqtt sehe ich das:
Code: Alles auswählen
2018-02-11 17:52:19.966 <error> Error: timeout
at Timeout.<anonymous> (/usr/local/lib/node_modules/hm2mqtt/node_modules/binrpc/lib/client.js:144:34)
at ontimeout (timers.js:458:11)
at tryOnTimeout (timers.js:296:5)
at Timer.listOnTimeout (timers.js:259:5)
Hast Du eine Idee, was das sein könnte? Ist die ganze Kommunikation so zeitkritisch, dass das über Remote gar nicht geht?
Meine Idee ist halt, dass unsere Visualisierung inkl. hm2mqtt Scripte auf einem einzigen Server läuft und die Daten bei den Homematic Zentralen abholt. Sie werden dann auf einem Node-Red Dashboard zusammengestellt. Sollte das nicht gehen, installiere ich halt das hm2mqtt Script jeweils lokal. Gibt ein wenig mehr Verwaltungsaufwand, aber geht auch.
Vielen Dank für Deine Antwort.
Stephan
-
- Beiträge: 3978
- Registriert: 12.07.2009, 20:01
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 176 Mal
- Kontaktdaten:
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Also wenn die VPN Verbindung nicht gerade "superlahm" ist "sollte" das kein Problem sein. Funktioniert es überhaupt nicht oder bricht es nach einer Weile erst zusammen? Wenn es gar nicht geht würde ich erstmal noch mal die Erreichbarkeit prüfen, vielleicht fehlt ja der CCU eine Route um hm2mqtt.js zu erreichen oder sowas ähnliches.
Wenn Du allerdings die Möglichkeit hast die hm2mqtt.js dort laufen zu lassen wo auch die CCU steht würde ich das auf jeden Fall bevorzugen. MQTT hat kein Problem mit wackligen und/oder langsamen Verbindungen und macht vernünftig und schnell Reconnects. Die CCU hingegen reagiert recht zickig wenn Sie Ihre Events nicht per RPC abliefern kann und die Erkennung von abgebrochenen RPC Verbindungen und der Reconnect dauert auch eine ganze Weile...
Wenn Du allerdings die Möglichkeit hast die hm2mqtt.js dort laufen zu lassen wo auch die CCU steht würde ich das auf jeden Fall bevorzugen. MQTT hat kein Problem mit wackligen und/oder langsamen Verbindungen und macht vernünftig und schnell Reconnects. Die CCU hingegen reagiert recht zickig wenn Sie Ihre Events nicht per RPC abliefern kann und die Erkennung von abgebrochenen RPC Verbindungen und der Reconnect dauert auch eine ganze Weile...
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Einsatz von hm2mqtt zum publishen von Verbrauchswerten zur Auswertung an eine MQTT Broker
Ich habe hobbyquaker/hm2mqtt.js auf einem Raspberry (IP x.x.x.30) installiert und bekomme auch mit --help schön die Optionen angezeigt.
Der Broker (IP x.x.x.6) ist seit geraumer Zeit im Einsatz.
Die CCU2 (RaspberryMatic) läuft auf (IP x.x.x.71).
Was muss ich jetzt wie konfigurieren und starten, damit ich z.B. jede Stunde die Verbrauchswerte (von HM-ES-PMSw1-Pl-DN-R1) an den Broker publishen kann.
So wie ich das verstehe muss erst das Programm hm2mqtt mit Parametern gestartet werden. Welche brauche ich da genau?
Ich muss denke ich, den Zugriff auf die CCU in den Firewall Einstellungen zulassen?
Wo kann ich einstellen was, wann gepublisht wird?
Läuft hm2mqqt auch als Dienst?
Versuch:
Ich möchte nur Werte auslesen und nicht setzen.
Einmal hat er scheinbar alle Werte an den Broker geschickt, aber wann kommt die nächste Sendung?
Sorry für die vielen Fragen.
Danke für die Hilfe!
Alex
Ich habe hobbyquaker/hm2mqtt.js auf einem Raspberry (IP x.x.x.30) installiert und bekomme auch mit --help schön die Optionen angezeigt.
Der Broker (IP x.x.x.6) ist seit geraumer Zeit im Einsatz.
Die CCU2 (RaspberryMatic) läuft auf (IP x.x.x.71).
Was muss ich jetzt wie konfigurieren und starten, damit ich z.B. jede Stunde die Verbrauchswerte (von HM-ES-PMSw1-Pl-DN-R1) an den Broker publishen kann.
So wie ich das verstehe muss erst das Programm hm2mqtt mit Parametern gestartet werden. Welche brauche ich da genau?
Ich muss denke ich, den Zugriff auf die CCU in den Firewall Einstellungen zulassen?
Wo kann ich einstellen was, wann gepublisht wird?
Läuft hm2mqqt auch als Dienst?
Versuch:
Code: Alles auswählen
pi@raspberrypi:~ $ hm2mqtt -a 192.168.100.71 -m "mqtt://192.168.100.6"
2018-02-15 09:47:07.148 <info> hm2mqtt 2.4.0 starting
2018-02-15 09:47:07.164 <info> mqtt trying to connect mqtt://192.168.100.6
2018-02-15 09:47:07.543 <info> loading names_192.168.100.71
2018-02-15 09:47:07.627 <info> rpc rfd > init [ 'xmlrpc_bin://192.168.100.30:2127', 'hm2mqtt_rfd' ]
2018-02-15 09:47:07.662 <info> rpc hmip > init [ 'http://192.168.100.30:2126', 'hm2mqtt_hmip' ]
2018-02-15 09:47:07.774 <info> mqtt connected mqtt://192.168.100.6
2018-02-15 09:47:07.780 <info> mqtt subscribe hm/set/#
2018-02-15 09:47:07.787 <info> mqtt subscribe hm/param/#
2018-02-15 09:47:07.789 <info> mqtt subscribe hm/paramset/#
2018-02-15 09:47:07.790 <info> mqtt subscribe hm/rega/#
2018-02-15 09:47:07.792 <info> mqtt subscribe hm/rpc/#
2018-02-15 09:47:07.793 <info> mqtt subscribe hm/command/#
2018-02-15 09:47:08.101 <info> got 242 names from rega. saving names_192.168.100.71
2018-02-15 09:47:13.901 <info> hmip got 20 devices and channels
2018-02-15 09:47:16.531 <info> rfd got 180 devices and channels
2018-02-15 09:47:21.626 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.629 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.631 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.654 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.656 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.658 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.681 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.683 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.685 <error> missing VALUES in paramsetDescription HMIP-PSM/4/SWITCH_VIRTUAL_RECEIVER
2018-02-15 09:47:21.715 <error> missing VALUES in paramsetDescription HMIP-PSM/4/ENERGIE_METER_TRANSMITTER
2018-02-15 09:47:21.717 <error> missing VALUES in paramsetDescription HMIP-PSM/4/ENERGIE_METER_TRANSMITTER
2018-02-15 09:47:21.718 <error> missing VALUES in paramsetDescription HMIP-PSM/4/ENERGIE_METER_TRANSMITTER
2018-02-15 09:47:21.720 <error> missing VALUES in paramsetDescription HMIP-PSM/4/ENERGIE_METER_TRANSMITTER
2018-02-15 09:47:21.721 <error> missing VALUES in paramsetDescription HMIP-PSM/4/ENERGIE_METER_TRANSMITTER
2018-02-15 09:47:21.723 <error> missing VALUES in paramsetDescription HMIP-PSM/4/ENERGIE_METER_TRANSMITTER
2018-02-15 09:47:33.125 <info> got 38 paramsetDescriptions
2018-02-15 09:47:35.246 <error> missing VALUES in paramsetDescription HM-ES-PMSw1-Pl-DN-R1/16/POWERMETER
2018-02-15 09:47:35.284 <error> missing VALUES in paramsetDescription HM-ES-PMSw1-Pl-DN-R1/16/POWERMETER
2018-02-15 09:47:35.287 <error> missing VALUES in paramsetDescription HM-ES-PMSw1-Pl-DN-R1/16/POWERMETER
2018-02-15 09:47:35.290 <error> missing VALUES in paramsetDescription HM-ES-PMSw1-Pl-DN-R1/16/POWERMETER
2018-02-15 09:47:35.292 <error> missing VALUES in paramsetDescription HM-ES-PMSw1-Pl-DN-R1/16/POWERMETER
2018-02-15 09:47:35.295 <error> missing VALUES in paramsetDescription HM-ES-PMSw1-Pl-DN-R1/16/POWERMETER
2018-02-15 09:48:06.108 <info> got 38 paramsetDescriptions
Einmal hat er scheinbar alle Werte an den Broker geschickt, aber wann kommt die nächste Sendung?
Sorry für die vielen Fragen.
Danke für die Hilfe!
Alex
Zuletzt geändert von alchy am 15.02.2018, 13:19, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Grund: Code in Codetags posten
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Nach Neustart des Raspberry funktioniert das empfangen der mqtt messages von der CCU einwandfrei.
Kann ich die Geräte oder Kanäle eingrenzen die Daten an den Broker senden?
Und wie kann ich das senden an die CCU unterbinden (einschalten und ausschalten von Geräten)?
Wie kann ich das als Dienst einbinden /etc/int.d hm-mqtt start, kommt die Logausgabe und gibt nicht die Kontrolle an die Console zurück?
Kann ich die Geräte oder Kanäle eingrenzen die Daten an den Broker senden?
Und wie kann ich das senden an die CCU unterbinden (einschalten und ausschalten von Geräten)?
Wie kann ich das als Dienst einbinden /etc/int.d hm-mqtt start, kommt die Logausgabe und gibt nicht die Kontrolle an die Console zurück?
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Hi
schau dir mal pm2 an (http://pm2.keymetrics.io/)
Falls Du Node-Red brauchst: Das beschränken auf x Msg. / Stunde kriegst du am besten mit der Delay Node hin in Node Red. Dort kannst Du in der Action Rate Limit auswählen.
Ansonsten musst Du das mit der "Logik" Deiner Wahl beschränken. Meiner Meinung nach ist dies weder die Aufgabe des hm2mqtt Scripts noch die des Brokers. Beiden sollen stur das abarbeiten, was sie kriegen.
Gruss
Stephan
schau dir mal pm2 an (http://pm2.keymetrics.io/)
Falls Du Node-Red brauchst: Das beschränken auf x Msg. / Stunde kriegst du am besten mit der Delay Node hin in Node Red. Dort kannst Du in der Action Rate Limit auswählen.
Ansonsten musst Du das mit der "Logik" Deiner Wahl beschränken. Meiner Meinung nach ist dies weder die Aufgabe des hm2mqtt Scripts noch die des Brokers. Beiden sollen stur das abarbeiten, was sie kriegen.
Gruss
Stephan
-
- Beiträge: 3978
- Registriert: 12.07.2009, 20:01
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 176 Mal
- Kontaktdaten:
Re: Vorstellung: hm2mqtt & mqtt-smarthome
hm2mqtt published die Werte stur jedes mal wenn der Schnittstellenprozess einen Event pushed. Wie Stephan schon sagte könntest Du mit Node-RED ein rate limit bauen.avolkmer hat geschrieben:Einsatz von hm2mqtt zum publishen von Verbrauchswerten zur Auswertung an eine MQTT Broker
Was muss ich jetzt wie konfigurieren und starten, damit ich z.B. jede Stunde die Verbrauchswerte (von HM-ES-PMSw1-Pl-DN-R1) an den Broker publishen kann.
Das könnte man über den Broker realisieren. Mosquitto bietet ACLs, damit kannst Du für bestimmte User nur bestimmte Topics freigeben. Du könntest z.B. hm2mqtt verbieten +/set/# zu subscriben oder allen anderen verbieten auf +/set/# zu publishen wenn Du 100% sicher gehen willst das niemand etwas setzen kann.avolkmer hat geschrieben: Ich möchte nur Werte auslesen und nicht setzen.
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Hallo,
kurze Frage. Kann es sein das die Systemvariablen Änderungen nicht an mqtt weitergegeben werden?
Ich suche eine Möglichkeit Systemstände an einen MQTT Client zu übergeben.
Gruss und Danke für die Hilfe!
Alex
kurze Frage. Kann es sein das die Systemvariablen Änderungen nicht an mqtt weitergegeben werden?
Ich suche eine Möglichkeit Systemstände an einen MQTT Client zu übergeben.
Gruss und Danke für die Hilfe!
Alex
-
- Beiträge: 3978
- Registriert: 12.07.2009, 20:01
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 176 Mal
- Kontaktdaten:
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Nicht per default, aber man kann das aktivieren. Systemvariablen und Programme werden auf der CCU von der "Rega" bereitgestellt, diese bietet leider keinen "Push-Mechanismus" um Änderungen an Systemvariablen zu erhalten. Daher müssen diese gepollt werden. hm2mqtt.js bietet zwei Möglichkeiten hierfür, den "rega-poll-interval" der einfach in fixen Abständen die Variablen von der Rega abfragt oder den "rega-poll-trigger" mit dem man sich einen "Pseudo-Push-Mechanismus" bauen kann. Siehe Readme auf https://github.com/hobbyquaker/hm2mqtt.js, Überschrift "ReGa (Homematic variables and programs)"avolkmer hat geschrieben:Kann es sein das die Systemvariablen Änderungen nicht an mqtt weitergegeben werden?
Re: Vorstellung: hm2mqtt & mqtt-smarthome
Hallo, danke für die Info.
Ich bekomme aber eine Fehlermeldung:
2018-03-04 17:57:20.616 <info> got 255 names from rega. saving names_192.168.100.71
in JSON at position 744<error> SyntaxError: Unexpected token
at JSON.parse (<anonymous>)
at rega (/usr/lib/node_modules/hm2mqtt/index.js:480:37)
at Request.request [as _callback] (/usr/lib/node_modules/hm2mqtt/index.js:465:13)
at Request.self.callback (/usr/lib/node_modules/hm2mqtt/node_modules/request/request.js:186:22)
at Request.emit (events.js:127:13)
at Request.<anonymous> (/usr/lib/node_modules/hm2mqtt/node_modules/request/request.js:1163:10)
at Request.emit (events.js:127:13)
at IncomingMessage.<anonymous> (/usr/lib/node_modules/hm2mqtt/node_modules/request/request.js:1085:12)
at Object.onceWrapper (events.js:219:13)
at IncomingMessage.emit (events.js:132:15)
Und bekomme als mqtt nur Programme mit true;
hm/status/Temperatur Elektro Min Max
{"val":true,"ts":1520182275000,"hm":{"id":12006}}
aber keine Variablen wie "Temperatur Elektro Max Heute"
EDIT: Erledigt, es dürfen keine Leerzeichen in den Variablennamen sein. Dann geht es.
Ich bekomme aber eine Fehlermeldung:
2018-03-04 17:57:20.616 <info> got 255 names from rega. saving names_192.168.100.71
in JSON at position 744<error> SyntaxError: Unexpected token
at JSON.parse (<anonymous>)
at rega (/usr/lib/node_modules/hm2mqtt/index.js:480:37)
at Request.request [as _callback] (/usr/lib/node_modules/hm2mqtt/index.js:465:13)
at Request.self.callback (/usr/lib/node_modules/hm2mqtt/node_modules/request/request.js:186:22)
at Request.emit (events.js:127:13)
at Request.<anonymous> (/usr/lib/node_modules/hm2mqtt/node_modules/request/request.js:1163:10)
at Request.emit (events.js:127:13)
at IncomingMessage.<anonymous> (/usr/lib/node_modules/hm2mqtt/node_modules/request/request.js:1085:12)
at Object.onceWrapper (events.js:219:13)
at IncomingMessage.emit (events.js:132:15)
Und bekomme als mqtt nur Programme mit true;
hm/status/Temperatur Elektro Min Max
{"val":true,"ts":1520182275000,"hm":{"id":12006}}
aber keine Variablen wie "Temperatur Elektro Max Heute"
EDIT: Erledigt, es dürfen keine Leerzeichen in den Variablennamen sein. Dann geht es.
Zuletzt geändert von avolkmer am 04.03.2018, 18:59, insgesamt 2-mal geändert.