NEWS
[Aufruf] Adapter: M-Bus
-
Vorne weg, super Sache mit dem M-Bus Adapter für ioBroker. Wenn ich daran denke, was ich für ein Geld dafür bei der Firma Relay und Wachendorff gelassen habe, um meine M-Bus Wäremengenzähler der Fa. Zelsius auslesen zu können. War eine echt teure Geschichte und das Gateway der Fa. Wachendorff habe ich bis heute nicht dazu bekommen über TCP/IP mit mir zu kommunizieren. `
Na dann verkauf es wieder und utze den Adapter
so verdient man mit ioBroker Geld, juhhuuhhh
-
Na dann verkauf es wieder.. `
In der Tat, dies werde ich wohl machen. Mit dem Wachendorff Gateway lassen sich eh nur die in der Kompatibilitätsliste aufgeführten Feldgeräte auslesen. Ein Wasserzähler war nicht dabei. War damals auch wieder ein Grund sich gegen einen Wasserzähler mit M-Bus Schnittstelle zu entscheiden.Die Impulszähler funktionieren bisher soweit fehlerfrei. Aber Du hast absolut recht mit deiner Aussage. Die Impulszählung funktioniert nicht immer zuverlässig und sie brauchen ab und an etwas Betreuung. Mit einer M-Bus Schnittstelle hat man dieses Problem nicht mehr.
Die libmbus Libary von rscada hatte ich mir im letzten Jahr auf dem Raspi installiert. Alle an der M-Bus Schnittstelle angeschlossenen Zähler (Wärmemengen-/Wechsel- und Drehstromzähler) lassen sich problemlos auslesen und in Node-Red (Standalone) weiterverarbeiten.
Und jetzt noch euer Adapter für den Normalanwender, super Arbeit von euch.
Garf
-
Du musst bei Windows die build-tools installieren. Braucht man für viele Nodejs-Modukle sobald die nativen code kompilieren.
https://github.com/felixrieseberg/windows-build-tools
Die installieren dann python und alles nötige. Danach nochmal versuchen.
Am Windows build hab ich laaaange rumgemacht
`
Ich dachte eigentlich das hätte ich schon einmal gemacht; komisch?
Werde das heute Abend nochmal probieren.
mfg `
So, habe die windows-build-tools als admin installiert. Ist auch alles ordnungsgemäß durchgelaufen.
Ich bekomme trotzdem noch ne Fehlermeldung.
Folgende:
Was muss ich jetzt tun?
mfg
-
Was muss ich jetzt tun? `
bitte den code als Text in code-tags posten, dann kann ich da etwas herauskopieren.Gruß
Rainer
-
iobroker 2018-03-12 19:08:23.587 info npm ERR! code 1 iobroker 2018-03-12 19:08:23.587 info npm ERR! Please include the following file with any support request:npm ERR! C:\ioBroker\node_modules\iobroker\npm-debug.log iobroker 2018-03-12 19:08:23.586 info iobroker 2018-03-12 19:08:23.525 info iobroker 2018-03-12 19:08:23.525 info npm ERR! There is likely additional logging output above. iobroker 2018-03-12 19:08:23.525 info npm ERR! npm owner ls node-mbus iobroker 2018-03-12 19:08:23.525 info npm bugs node-mbusnpm ERR! Or if that isn't available, you can get their info via: iobroker 2018-03-12 19:08:23.524 info npm ERR! iobroker 2018-03-12 19:08:23.524 info npm ERR! You can get information on how to open an issue for this project with: iobroker 2018-03-12 19:08:23.524 info npm ERR! node-gyp rebuild iobroker 2018-03-12 19:08:23.524 info npm ERR! Tell the author that this fails on your system: iobroker 2018-03-12 19:08:23.524 info npm ERR! not with npm itself. iobroker 2018-03-12 19:08:23.524 info npm ERR! If you do, this is most likely a problem with the node-mbus package, iobroker 2018-03-12 19:08:23.524 info Failed at the node-mbus@0.2.0 install script 'node-gyp rebuild'.npm ERR! Make sure you have the latest version of node.js and npm installed. iobroker 2018-03-12 19:08:23.524 info npm ERR! iobroker 2018-03-12 19:08:23.524 info npm ERR! iobroker 2018-03-12 19:08:23.524 info npm ERR! node-mbus@0.2.0 install: `node-gyp rebuild`npm ERR! Exit status 1 iobroker 2018-03-12 19:08:23.522 info iobroker 2018-03-12 19:08:23.522 info npm ERR! code ELIFECYCLE iobroker 2018-03-12 19:08:23.522 info npm ERR! npm v3.10.8 iobroker 2018-03-12 19:08:23.522 info npm ERR! node v6.9.0 iobroker 2018-03-12 19:08:23.522 info ERR! Windows_NT 6.1.7601npm ERR! argv "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "https://github.com/Apollon77/ioBrok iobroker 2018-03-12 19:08:23.521 info npm iobroker 2018-03-12 19:08:20.864 info iobroker 2018-03-12 19:08:20.864 info gyp ERR! node-gyp -v v3.4.0gyp ERR! not ok iobroker 2018-03-12 19:08:20.864 info iobroker 2018-03-12 19:08:20.864 info gyp ERR! node -v v6.9.0 iobroker 2018-03-12 19:08:20.864 info gyp ERR! cwd C:\ioBroker\node_modules\iobroker.mbus\node_modules\node-mbus iobroker 2018-03-12 19:08:20.864 info gyp ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" iobroker 2018-03-12 19:08:20.864 info gyp ERR! System Windows_NT 6.1.7601 iobroker 2018-03-12 19:08:20.864 info gyp ERR! stack at FSReqWrap.oncomplete (fs.js:123:15) iobroker 2018-03-12 19:08:20.864 info gyp ERR! stack at C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:404:11 iobroker 2018-03-12 19:08:20.864 info gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.gyp ERR! stack at failNoPython (C:\Program Files (x86)\nodejs\node_modules\npm\node_modules\node-g iobroker 2018-03-12 19:08:20.863 info ERR! configure error iobroker 2018-03-12 19:08:20.862 info gyp iobroker 2018-03-12 19:08:06.058 info npm install https://github.com/Apollon77/ioBroker.mbus/tarball/master --production --prefix "C:/ioBroker" (System call) iobroker 2018-03-12 19:08:05.915 info install https://github.com/Apollon77/ioBroker.mbus/tarball/master iobroker 2018-03-12 19:08:05.241 info url "https://github.com/Apollon77/ioBroker.mbus"
so richtig ?
-
wenn ich das ganze direkt in cmd eingebe, dann kommt folgendes:
-
so richtig ? `
Ja, da schon, aber
@bahnuhr:dann kommt folgendes: `
hier nichtZum ersten Code:
@bahnuhr:ERR! command "C:\\Program Files (x86)\\nodejs\\node.exe" "C:\\Program Files (x86)\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" ```` `
nicht dass ich dir helfen kann, aber vielleicht für @apollon77:
das sieht aus, als ob die Backslashes hätten escaped werden sollen und statt dessen doppelt sind.
Gruß
Rainer
-
Also an sich sollten die build tools Dir python installieren. Er meckert das das immer noch fehlt. hast Due die Buildtools als Admin installiert?
Das andere meckert weil Du kein "git" hast. Installier mal git für Windows
Ingo F
-
So noch ne Info von mir.
Habe ja im Keller einen Raspi der als slave mit iobroker verbunden ist.
Dort läuft der smartmeter
Jetzt dachte ich, ich stelle den admin auf den slave und installieren die mbus Instanz dort.
Im log erscheint dann:
iobroker 2018-03-12 21:14:01.113 info exit 0 iobroker 2018-03-12 21:13:14.894 info No prebuilt binaries found (target=6.13.0 runtime=node arch=arm platform=linux) iobroker 2018-03-12 21:13:14.891 info WARN install iobroker 2018-03-12 21:13:14.889 info prebuild-install iobroker 2018-03-12 21:13:14.867 info 404 https://github.com/node-serialport/node-serialport/releases/download/v6.1.1/serialport-v6.1.1-node-v48-linux-arm.tar.gz iobroker 2018-03-12 21:13:14.863 info http iobroker 2018-03-12 21:13:14.860 info prebuild-install iobroker 2018-03-12 21:13:14.256 info prebuild-install http request GET https://github.com/node-serialport/node-serialport/releases/download/v6.1.1/serialport-v6.1.1-node-v48-linux-arm.tar.gz iobroker 2018-03-12 21:13:14.256 info prebuild-install info looking for cached prebuild @ /root/.npm/_prebuilds/https-github.com-node-serialport-node-serialport-releases-download-v6.1.1-serialport-v6.1.1-node-v48-linux-arm.tar.gz iobroker 2018-03-12 21:13:14.256 info info begin Prebuild-install version 2.5.1prebuild-install info looking for local prebuild @ prebuilds/serialport-v6.1.1-node-v48-linux-arm.tar.gz iobroker 2018-03-12 21:13:14.203 info prebuild-install iobroker 2018-03-12 21:12:23.622 info npm install https://github.com/Apollon77/ioBroker.mbus/tarball/master --production --prefix "/opt/iobroker" (System call) iobroker 2018-03-12 21:12:23.252 info install https://github.com/Apollon77/ioBroker.mbus/tarball/master iobroker 2018-03-12 21:12:22.061 info url "https://github.com/Apollon77/ioBroker.mbus"
Sieht schon besser aus, aber irgendwas findet er doch nicht, oder ?
404 https://github.com/node-serialport/node-serialpo…............
mfg
Dieter
-
Also an sich sollten die build tools Dir python installieren. Er meckert das das immer noch fehlt. hast Due die Buildtools als Admin installiert?
Das andere meckert weil Du kein "git" hast. Installier mal git für Windows
Ingo F `
Ja habe cmd als admin aufgerufen (ohne admin geht es gar nicht).
git für windows -> was ist das ?
muss ich mal google.
-
so, jetzt habe ich auf dem raspi slave zumindest mal eine Instanz.
Diese ist aber leer.
-
Und nochmal auf dem raspi installiert.
Sieht gut aus (glaub ich).
iobroker 2018-03-12 21:28:40.567 info exit 0 iobroker 2018-03-12 21:28:40.468 info upload [0] mbus.admin /opt/iobroker/node_modules/iobroker.mbus/admin/index.html index.html text/html iobroker 2018-03-12 21:28:40.404 info upload [1] mbus.admin /opt/iobroker/node_modules/iobroker.mbus/admin/index_m.html index_m.html text/html iobroker 2018-03-12 21:28:40.338 info upload [2] mbus.admin /opt/iobroker/node_modules/iobroker.mbus/admin/mbus.png mbus.png image/png iobroker 2018-03-12 21:28:40.240 info upload [3] mbus.admin /opt/iobroker/node_modules/iobroker.mbus/admin/words.js words.js application/javascript iobroker 2018-03-12 21:28:40.212 info got /opt/iobroker/node_modules/iobroker.mbus/admin iobroker 2018-03-12 21:28:40.058 info └── xmlbuilder@9.0.7 iobroker 2018-03-12 21:28:40.058 info └─┬ xml2js@0.4.19 iobroker 2018-03-12 21:28:40.058 info └─┬ node-mbus@0.2.0 iobroker 2018-03-12 21:28:40.058 info iobroker@1.0.0 /opt/iobroker└─┬ iobroker.mbus@0.0.2 iobroker 2018-03-12 21:27:40.352 info npm install https://github.com/Apollon77/ioBroker.mbus/tarball/master --production --prefix "/opt/iobroker" (System call) iobroker 2018-03-12 21:27:39.982 info install https://github.com/Apollon77/ioBroker.mbus/tarball/master iobroker 2018-03-12 21:27:38.785 info url "https://github.com/Apollon77/ioBroker.mbus" --debug
Die Adapterkonfiguration ist aber immer noch leer.
mfg
-
Hi,
Windows GIT: https://git-scm.com/download/win
Ansonsten: Install hast Du zu schnell abgebrochen. Wenn er serialport nicht findet (404) dann kompiliert er es selbst, das dauert ne Weile
Letzte installationsausgaben sahen gut aus.
Das Upload auch.
AM besten jetzt nochmal updaten vom Github, hab noch rumgebaut bis eben.
Mal ioBroker neu starten und den Browser auch. Kommt dann was?
Ich hab Admin3, da ist die Konfig da
Und ehrlich auch kein Admin2 mehr irgendwo
Was sagt denn die Browser/JavaScript Konsole? Irgendwelche Fehler?
Ingo F
-
@All: ioBroker-mbus 0.0.2 auf Github und morgen im Latest.
neu sind Optimierungen und Fixes und vor allem der Gerätescan auf dem M-Bus. Im Tab "Geräte" in der Konfig ist ein Suchbutton. Klicken, ca. 1,5+ Minuten warten (ja so lange und ggf noch länger, also Geduld haben!) und dann sollten alle Secondary-IDs in der Konfig aufgelistet sein.
-
Ingo,
Nachtrag von mir.
Habe jetzt admin 3 drauf und da sehe ich die Konfiguration.
Jetzt müssen nur noch die Teile kommen.
mfg
-
Neue Version 0.1.1 ist auf Github und morgen im Latest.
-
Admin2 gefixt
-
andere Bugs gefixt
-
Windows fix
-
-
Jetzt bin ich gespannt ob jemand MBus im Einsatz hat und mittesten kann. `
Ich habe hier vier M-Bus Wärmezähler der Fa. Zensus Typ zelsius C5-ISF im Einsatz. Als weitere Testobjekte könnte ich noch einen SAIA Wechselstromzähler ALD1 und einen Drehstromzähler Typ ALE3 an den M-Bus bringen.ioBroker läuft bei mir auf einer QNAP-NAS. Der M-Bus Adapter ließ sich im 2. Anlauf promlemlos installieren. Nach Einrichtung der TCP Schnittstelle wurden die vier Wärmezähler sofort erkannt. Die Werte in den M-Bus Registern werden angezeigt. Soweit schaut schon einmal alles ganz prima aus.
Was mir allerdings nicht so gut gefällt sind die Aktivierungsintervalle. Für die Stromzähler ist die Art der Auslesung prima, aber für die Wärmezähler mit ihrer 5-Jahresbatterie eher nicht. Wäre es evtl. möglich so eine Art Abfragezyklus über die Zeit (z.B.Tag/ Uhrzeit) und auf Anfrage einzurichten?
Wer so einen Adapter programmieren kann, der kennt sich doch sicher sehr gut mit dem libmbus und mit dem scannen des M-Busses aus und kann mir vielleicht folgende Frage beantworten.
Wie kann ich aus dem M-Bus Telegramm der Wärmezähler Zensus Zelsius C5-ISF den Variablenyp (16bit/32bit) auslesen?
Diese Infos bräuchte ich um ein M-Bus / Modbus Gateway projektieren zu können.
-
Der M-Bus Adapter ließ sich im 2. Anlauf promlemlos installieren. `
Was gabs beim ersten Versuch?Nach Einrichtung der TCP Schnittstelle wurden die vier Wärmezähler sofort erkannt. Die Werte in den M-Bus Registern werden angezeigt. Soweit schaut schon einmal alles ganz prima aus. `
Super! DankeWas mir allerdings nicht so gut gefällt sind die Aktivierungsintervalle. Für die Stromzähler ist die Art der Auslesung prima, aber für die Wärmezähler mit ihrer 5-Jahresbatterie eher nicht. Wäre es evtl. möglich so eine Art Abfragezyklus über die Zeit (z.B.Tag/ Uhrzeit) und auf Anfrage einzurichten? `
Du hast gesehen das Du das Abfrageintervall je Device in der Deviceliste anders einstellen kannst?
Du könntest also bei dem Wärmezähler als Intervall einmal Täglich (in Sekunden dann halt) eintragen. Hilft das?
Was ich noch vor habe (im Adapter noch fehlt) sind "update"-States pro Device sodass man manuell eine Abfrage triggern kann.
Wer so einen Adapter programmieren kann, der kennt sich doch sicher sehr gut mit dem libmbus und mit dem scannen des M-Busses aus und kann mir vielleicht folgende Frage beantworten. `
Danke für das Vertrauen … ich kanns versuchen
Wie kann ich aus dem M-Bus Telegramm der Wärmezähler Zensus Zelsius C5-ISF den Variablenyp (16bit/32bit) auslesen?
Diese Infos bräuchte ich um ein M-Bus / Modbus Gateway projektieren zu können. `
Ohne das genaue Telegram zu kennen kann ich nur auf http://www.m-bus.com/mbusdoc/md6.php verweisen … in 6.3.2 (als Beispiel) steht das im DIB ... musst Du Dekodieren ... Warum nimmst Du nicht die libmbus zum dekodieren? -
Was gabs beim ersten Versuch? `
Sorry, beim besten Willen kann ich dies leider nicht mehr reproduzieren. Eigentlich wollte ich damit dann auch hier im Thread aufschlagen, aber dann habe ich die Installation einfach noch einmal durchgeführt. Der Adapter wurde nachgeladen und ich konnte ihn konfigurieren.Du hast gesehen das Du das Abfrageintervall je Device in der Deviceliste anders einstellen kannst?
Du könntest also bei dem Wärmezähler als Intervall einmal Täglich (in Sekunden dann halt) eintragen. Hilft das?
Was ich noch vor habe (im Adapter noch fehlt) sind "update"-States pro Device sodass man manuell eine Abfrage triggern kann. `
Ja, habe ich gesehen und zweimal täglich eingestellt (43200 Sek). Aber scheint noch nicht zu funktionieren, da sich seit der gestrigen Einrichtung (1.Scan) die Werte nicht mehr verändert haben. Da habe ich wohl noch eine Baustelle. Triggern auf Anforderung wäre genau das was ich bräuchte.Ich würde gerne den Solarwärmezähler auf Knopdruck abfragen, um die momentane Leistung der Solaranlage sehen zu können. Finde ich zwar alles nicht so toll, aber bei einem batteriebetriebenen Wärmezähler geht es leider nicht anders. Man müsste diese blöden Zähler mit eine externen Stromversogung speisen können, dann gäbe es all die Probleme nicht.
Ohne das genaue Telegram zu kennen kann ich nur auf http://www.m-bus.com/mbusdoc/md6.php verweisen … in 6.3.2 (als Beispiel) steht das im DIB ... musst Du Dekodieren ... Warum nimmst Du nicht die libmbus zum dekodieren? `
Das Telegramm könnte ich dir in Hexform zur Verfügung stellen. Ich habe es auch schon versucht zu übersetzen, aber spätestens beim variablen Teil muss ich echt passen.Mit dem libmbus komme ich leider nicht wirklich klar, bis auf die zwei Konsolenbefehle
mbus-tcp-scan 192.168.0.100 1001 und mbus-tcp-request-data kann ich mit dem Rest nicht wirklich etwas anfangen. Auch die Dokumentation hilft mir leider nicht wirklich weiter. http://www.rscada.se/libmbus/doc/libmbus-api.pdf
Da fehlt mir wohl das notwendige Hintergrundwissen.
Vielleicht bekomme ich noch Infos vom Hersteller. Die Anfrage habe ich über Stark Elektronik gestellt.
Wenn ich überhaupt nicht weiterkommen, dann muss ich halt für jeden Wert zwei Modbusregister vorhalten. In Summe wären es dann 44 Modbusregister (16bit) je Zähler, bei 5 Zähler dann doch 220 Register. :shock:
-
Du hast gesehen das Du das Abfrageintervall je Device in der Deviceliste anders einstellen kannst?
Du könntest also bei dem Wärmezähler als Intervall einmal Täglich (in Sekunden dann halt) eintragen. Hilft das?
Was ich noch vor habe (im Adapter noch fehlt) sind "update"-States pro Device sodass man manuell eine Abfrage triggern kann. `
Ja, habe ich gesehen und zweimal täglich eingestellt (43200 Sek). Aber scheint noch nicht zu funktionieren, da sich seit der gestrigen Einrichtung (1.Scan) die Werte nicht mehr verändert haben. Da habe ich wohl noch eine Baustelle. Triggern auf Anforderung wäre genau das was ich bräuchte.Ich würde gerne den Solarwärmezähler auf Knopdruck abfragen, um die momentane Leistung der Solaranlage sehen zu können. Finde ich zwar alles nicht so toll, aber bei einem batteriebetriebenen Wärmezähler geht es leider nicht anders. Man müsste diese blöden Zähler mit eine externen Stromversogung speisen können, dann gäbe es all die Probleme nicht. `
Also das sollte tun. Wichtig ist aber hier das der Adapter die Werte prüft ob SIe sich geändert haben und nur das in ioBroker schreibt. Wenn Du log auf "Info" hast siehst Du wann er welches Device abfragt. Ist aktuell noch das test-Logging. So kannst Du testen was wann ausgelesen wurde.
Ich habe gerade 0.1.3 auf Github gestellt (nur dort aktuell weil noch nahezu komplett ungetestet). Da gbt es jetzt pro Device auch ein "updateNow"-State. Das auf "true" setzen und es sollte eine Anfrage getriggert werden (to be tested)
Ohne das genaue Telegram zu kennen kann ich nur auf http://www.m-bus.com/mbusdoc/md6.php verweisen … in 6.3.2 (als Beispiel) steht das im DIB ... musst Du Dekodieren ... Warum nimmst Du nicht die libmbus zum dekodieren? `
Das Telegramm könnte ich dir in Hexform zur Verfügung stellen. Ich habe es auch schon versucht zu übersetzen, aber spätestens beim variablen Teil muss ich echt passen.Mit dem libmbus komme ich leider nicht wirklich klar, bis auf die zwei Konsolenbefehle
mbus-tcp-scan 192.168.0.100 1001 und mbus-tcp-request-data kann ich mit dem Rest nicht wirklich etwas anfangen. Auch die Dokumentation hilft mir leider nicht wirklich weiter. http://www.rscada.se/libmbus/doc/libmbus-api.pdf
Da fehlt mir wohl das notwendige Hintergrundwissen.
Vielleicht bekomme ich noch Infos vom Hersteller. Die Anfrage habe ich über Stark Elektronik gestellt.
Wenn ich überhaupt nicht weiterkommen, dann muss ich halt für jeden Wert zwei Modbusregister vorhalten. In Summe wären es dann 44 Modbusregister (16bit) je Zähler, bei 5 Zähler dann doch 220 Register. :shock: `
Ok, so tief bin ich auch nicht drin. Könnte es auch nur versuchen auf Protokollebene auseinanderzunehmen mit der Doku … deswegen hab ich die libmbus genommen anstelle das protokoll selbst zu parsen