WCM-COM nach Mqtt Gateway.

Begonnen von uli69, 19 Mai 2020, 12:06:59

Vorheriges Thema - Nächstes Thema

schneider.krombach

Hallo,

erstmal ein großes Danke für Deine Mühe.

ich habe vor einiger Zeit auch mal die Lösung von Elektrolurch zum Auslesen meiner Gasbrennwert ausprobiert, hat bei mir aber nicht zuverlässig gearbeitet und daher hab ich das wieder aufgegeben.
Nun durch Zufall Deinen Ansatz gefunden und nach einigen Anlaufschwierigkeiten (fehlende Packages) habe ich es auf einem separatem Raspberry unter Buster installiert.
Hab da aber einige Punkte wo ich nicht wirklich weiter komme.

FHEM läuft bei mir auf einem eigenständigem Server auf Ubuntu, wie binde ich das Gateway dann in FHEM ein?
Das Gateway muss ja auch wissen welche IP die WCM-COM hat, wo trage ich das ein und wie startet man das Gateway?
Hab mit MQTT noch nicht wirklich was gemacht.

Grüße
Thomas
FHEM unter Ubuntu 18.04 in einer virtuelle Hyper-V Maschine auf einem Intel Xeon Server - LaCrosse, IT, HM, 1-Wire, ESP8266, Landroid, Home Connect, FTUI, Solarview

Tiff1112

Moin,

auf der git seite vom Uli Eckhardt (ist schon verlinkt ganz oben. kannst du dir die Doku für die aufrufe ansehen. Ziemlich weit unten findest du Aufrufbeispiele.
zur config:

in der config.json
werden die von dir benötigten Einträge hinterlegt:

"wcmconfig":"/home/smarthome/WTM/wcm_data.json",
"wcmhost":"192.168.40.205",
"mqtt" : {
"host":"127.0.0.1",
"port": 1883,


so schaut es bei mir aus. der MQTT broker läuft bei mir auf dem gleichen Gerät wie das Gateway. Deine FHEM muss also entweder einen eigenen Broker haben welcher bereit steht den du da einträgst oder aber einen Client bereitstellen die sich auf einen Broker verbinden kann. ich nutzer SmarthomeNG, inwiefern das da identisch ist weiß ich nicht.

Grüße
Stefan

schneider.krombach

Hallo Stefan,

vielen Dank für die Infos. Werde die Tage das mal probieren und hier berichten.
Muss mich erstmal in die MQTT Broker Materie einlesen und überlegen wie ich das am sinnvollsten bei mir umsetze.


Grüße
Thomas
FHEM unter Ubuntu 18.04 in einer virtuelle Hyper-V Maschine auf einem Intel Xeon Server - LaCrosse, IT, HM, 1-Wire, ESP8266, Landroid, Home Connect, FTUI, Solarview

uli69

Hi,

zum Start, so sieht meine Config aus. Wenn dann mal alle Values published sind, kann man attr D_HZ autoSubscribeReadings wcm/+/value auskommentieren.

define broker MQTT localhost:1883
attr broker icon mqtt_broker
attr broker last-will retain:1 fhem/connection/status disconnected
attr broker on-connect retain:1 fhem/connection/status connected
attr broker on-disconnect retain:1 fhem/connection/status disconnected

attr D_HZ autoSubscribeReadings wcm/+/value
define D_HZ MQTT_DEVICE
setuuid D_HZ 5ec69152-f33f-5725-5e18-f47eae570f478aac
attr D_HZ IODev broker
attr D_HZ alias Heizung
attr D_HZ devStateIcon Connected:mqtt Failed:mqtt@red
attr D_HZ icon sani_heating
attr D_HZ publishSet_111-Betriebsart Standby Programm-1 Programm-2 Programm-3 Wie-Leitstelle Normal Absenk Sommer \
        wcm/111-Betriebsart/set
attr D_HZ publishSet_501-Reduzierbetrieb Frost Absenk \
        wcm/501-Reduzierbetrieb/set
attr D_HZ room Heizung


Tiff1112

#19
Hallo zusammen,

kann ein neuer String Map eingebaut werden?

"Solar-DTR" :
[
{
"code" : 0,
"text" : "stagnation"
},
{
"code" : 1,
"text" : "kollektor_frostschutz"
},
{
"code" : 2,
"text" : "solarregeler_in_handfunktion"
},
{
"code" : 3,
"text" : "solarregeler_in_notbetrieb"
},
{
"code" : 4,
"text" : "pumpenstandschutz"
},
{
"code" : 5,
"text" : "ref_unterer_ap"
},
{
"code" : 6,
"text" : "ref_kennlinie"
},
{
"code" : 7,
"text" : "keine_sol_energiegew"
},
{
"code" : 8,
"text" : "kein_ertrag"
},
{
"code" : 9,
"text" : "sol_energiegew"
},
{
"code" : 10,
"text" : "sol_ruekkuehlung"
},
{
"code" : 11,
"text" : "kollektorschutz"
},
{
"code" : 12,
"text" : "dtr_sonderphase"
},
{
"code" : 13,
"text" : "stabilisierung"
},
{
"code" : 14,
"text" : "yield"
},
{
"code" : 15,
"text" : "regelung"
}
],


wenn weitere Infos nötig sind gern melden. Ich kann es auch selbst versuchen wenn das nichts aus macht.

PS.: wenn Readings erweitert werden (entfernt oder ergänzt) müssen die Readings 100% passen sonst kann es passieren das ein nachfolgendes Reading nur noch Blödsinn anzeigt. dies passiert u.A auch wenn es ein Reading nicht gibt.
Man kann seine WCM-COM schön analysieren wenn man sich von der SD Karte des Moduls ein abzug macht und sich die einzelnen Forms anschaut. (Nur zur Info)

hier ein Beispiel:

{
"accuracy" : 0.1,
"div" : 1,
"group" : "wcm-sol",
"max" : 15,
"method" : "conv_raw",
"min" : 0,
"mul" : 1,
"name" : "Status-DTR",
"telegram" :
[
[ 3, 0, 1, 753 ]
],
"unit" : "",
"writable" : false
},

Wenn das Reading mit conv_raw anfragt weil es noch keine Übersetzung gibt fliegt das nächste (nächst höhere 753 --> 1670) reading quasi raus und gibt quark zurück. in meinem Fall:

{
"autogen" : 2,
"accuracy" : 0.1,
"div" : 1,
"group" : "wcm-sol",
"max" : 65535,
"method" : "conv_float",
"min" : 0,
"mul" : 1,
"name" : "Tagesertrag",
"telegram" :
[
[ 3, 0, 1, 1670 ]
],
"unit" : "kWh",
"writable" : false
},


Schöne Grüße!

uli69

Was eher wahrscheinlich ist, ist das die Telegramme nicht stimmen, bzw das für einen Wert mehrere Telegramme geschickt werden müssen. Wenn das alles nicht stimmt liefert die WCM-COMM lustige Werte  ???

Tiff1112

Hab dir die Telegramme geschickt.
Was mich irritiert ist das verhalten wenn vor/nach dem Betreffenden reading was eingefügt wird und dann der Fehler auftritt. nimmt man die Änderung raus funktioniert wieder alles problemlos.

Grüße

uli69

Die Stringmap ist mit dem neuen Konverter conv_solar_dtr verfügbar.

Für den Tagesertrag gibt es auch einen neuen Konverter conv_float2 der nur zwei Telegramme erwartet, conv_float habe ich nach conv_float3 umbenannt, damit klar ist das dieser Konverter drei Telegramme benötigt. Die Änderungen sind auf dem Branch "solar" verfügbar.

Eine Prüfung ob die Anzahl der Telegramme in der Definition für ein Reading mit der Anzahl der Telegramme, die der Konverter erwartet übereinstimmt, gibt es nicht. Könnte man zwar einbauen, da bin ich aber zu Faul zu ;)

uli69

Es gibt eine neue Version im git-Repository https://git.uli-eckhardt.de/?p=WcmToMqtt.git;a=summary mit Verbesserungen für Solar und Ölbrenner. Außerdem gibt es jetzt die Möglichkeit die Authentifizierung zu nutzen.

Ich musste allerdings noch mal kräftig am Design drehen damit sich die notwendigen Änderungen mit den bestehenden Konfigurationen vertragen. Die "Reading-Groups" sind jetzt in jeweils eigene *.json Dateien gewandert und man muss in der Config jetzt erst mal die zu ladenden Groups konfigurieren. Deswegen wird jetzt auch beim Start mit der -d Option das Config-Directory benötigt. D.h. der Start erfolgt mit: /usr/local/bin/wcmtomqtt -m -d /etc/wcmtomqtt

Die neuen Argumente in der config.json sind wcmuser, wcmpassword für die Authentifizierung und groups für die zu nutzenden Reading-Groups. Die Gruppe wtc-g ist für Gasbrenner, wtc-o für Ölbrenner. Die beiden Gruppen können nicht zusammen genutzt werden. hk2 sollte nur geladen werden, wenn auch ein zweiter Heizkreis vorhanden ist und wcm-sol nur wenn eine Solaranlage angeschlossen ist.

{
        "wcmhost":"hostname",
        //"wcmuser": "username",
        //"wcmpassword": "password",
        "groups": [
                {"group":"wtc-g"},
                // {"group":"wtc-o"},
                //{"group":"wcm-sol"},
                {"group":"hk1"},
                //{"group":"hk2"},
                {"group":"user"}
        ],
        "mqtt" : {
                "host":"hostname",
                "port": 1883,
                "user": "user",
                "password": "password",
                "interval": 5,
                "retain": false,
                "prefix": "wcm",
                "queryvals": [
                        {"group":"wtc-g", "interval": 3},
                        {"group":"user", "interval": 30}
                ]
        }
}



Tiff1112

Hey vielen Dank,

ich werde es umgehend einbauen und testen.

PS: der conv_int2 hat immer noch die x1000 drin welche mir die Verbrauchswerte fürs öl verhagelt. Konntest du was mit den Telegrammen die ich dir dazu geschickt hatte anfangen?

Grüße!
SL

uli69

Zitat von: Tiff1112 am 28 Dezember 2020, 18:54:42
PS: der conv_int2 hat immer noch die x1000 drin welche mir die Verbrauchswerte fürs öl verhagelt. Konntest du was mit den Telegrammen die ich dir dazu geschickt hatte anfangen?
Ich habe gerade noch mal einen Fix für das Problem eingecheckt. Ich hoffe mal, das es jetzt auch in der Praxis funktioniert ;)

Tiff1112

Ah cool, werde ich testen.
Auch den Rest, leider hab ich es noch nicht geschafft, werde aber bis mitte Januar auf jeden Fall eine Rückmeldung geben.

Guten Rutsch!

b4r7

Vielen Vielen Dank! Ein Docker Container wär grandios!
FHEM auf Debian VM (FreeNAS bhyve)
HMUart + ZME-UZB1 über RPi2/ser2net

uli69

Zitat von: b4r7 am 30 Dezember 2020, 23:24:31
Vielen Vielen Dank! Ein Docker Container wär grandios!
Die Software kompiliert problemlos auf allen halbwegs aktuellen Distributionen und auch problemlos auf meinem Banana Pi R1 :D . Docker ist mir da zu viel Aufwand.

uli69

Es gibt noch mal eine neuere Version 0.9.1 . Damit kann man auch einen Reset der WCM-COM auslösen. Irgendwie möchte meine WCM-COM so ein mal die Woche einen Reset ???

Die WCM-COM kann via MQTT oder Kommandozeile resettet werden. Der Reset via MQTT baut auch die Verbindung zum MQTT-Server kurzzeitg ab. In der json.conf muss die Gruppe system geladen werden:

"groups": [
    {"group":"system"}
    ...


Reset via Kommandozeile
wcmtomqtt -d /etc/wcmtomqtt -s 0,0,251,reset
Achtung, man sollte möglichst keinen Reset über die Kommandozeile auslösen, wenn die MQTT-Abfrage wo anders aktiv ist.

Reset via MQTT
mosquitto_pub ... -t wcm/Reset/set -m reset