Zwave Qubino Smart Meter ZMNHTDx - energy reading

Begonnen von redFred, 01 Februar 2024, 00:02:33

Vorheriges Thema - Nächstes Thema

redFred

Hallo zusammen,

Super Forum, ich habe schon viele Lösungen für meine Themen hier gefunden.
Zu den Qubino Smart Meter habe ich aber leider nicht allzu viel gefunden, scheint nicht weit verbreitet zu sein.
Ich bin daher selber auf die Suche gegangen und möchte hier meine Erkenntnisse teilen, vielleicht hilft es ja jemanden.

Ich habe seit einiger Zeit zwei Qubino Smart Meter im Einsatz. Einer misst den Anschluss meiner PV Balkonanlage, der andere den Hausanschluss.
Liefert die PV Anlage mehr Leistung als ich im Haus verbrauche zeigt der Smart Meter am Hausanschluss eine negative Leistung im "power" reading an, so weit so gut.
Allerdings werden die Werte für importierte und exportierte Energiemengen (kWh) in nur ein reading namens "energy" geschrieben, wodurch z.B. eine Auswertung oder grafische Darstellung schwierig wird.
Ich bin dann irgendwann auf die Aussage des Herstellers gestoßen, dass die Werte in der Zwave Signalisierung durchaus unterschieden werden.
Im ZWave Parser Modul (10_ZWave.pm) bin ich dann auf die "rate_type" Variable gestoßen, die wohl geparst, aber nicht verwendet wird.
Mit der folgenden kleinen Anpassung des Modules bekomme ich jetzt die exportiert Energiemenge in einem Reading namens "energy_export" zurück.

Zeile:     my @rate_type_text =("undef","consumed", "produced");    geändert in     my @rate_type_text =("undef","_import", "_export");

und folgenden Teil eingefügt hinter dem "$meter_type_text" Absatz:   
  if (index($meter_type_text, "energy") != -1) {
     if (index($rate_type_text, "_export") != -1) {
        $meter_type_text .= $rate_type_text;
     }
  }

Ist eventuell nicht die beste Programmierung, habe mir die Perl Ausdücke im Netz gesucht da ich so gut wie keine Perl Kenntnisse habe. Aber es funktioniert so weit :-).

Vielleicht hilft es ja dem ein oder anderen, oder es entwickelt sich daraus vielleicht auch eine allgemeine Lösung die beim Update erhalten bleibt.

Gruß
Fred
 




 
 

rudolfkoenig

Danke fuer den Hinweis.
Ich habe den Vorschlag (leicht anders formuliert) eingebaut, bitte testen: entweder per SVN oder FHEM update morgen ab 8.

redFred

Oh super, habe heute Früh ein Update gemacht und bekomme weiterhin die "energy_export" readings.

Hier ein Ausschnitt aus dem Log:
2024-02-02_13:32:58 Power.Haus energy: 8262.3 kWh
2024-02-02_13:33:03 Power.Haus energy_export: 317.9 kWh
2024-02-02_13:56:06 Power.Haus energy: 8262.3 kWh
2024-02-02_13:56:11 Power.Haus energy_export: 317.9 kWh
2024-02-02_13:58:01 Power.Haus energy: 8262.4 kWh
2024-02-02_13:59:26 Power.Haus energy: 8262.4 kWh
2024-02-02_13:59:31 Power.Haus energy_export: 317.9 kWh
2024-02-02_14:26:21 Power.Haus energy: 8262.5 kWh
2024-02-02_14:59:12 Power.Haus energy: 8262.6 kWh

Danke & Gruß
Fred

redFred

Hallo,
habe gerade festgestellt, daß ich anscheinend keinen Restart gemacht hatte  :o .
Nach einem Restart werden die Werte für das energy_export Reading jetzt ohne Einheit ins Log geschrieben.

2024-02-03_14:50:11 Power.Haus energy: 8269.8 kWh
2024-02-03_14:50:16 Power.Haus energy_export: 319.6
2024-02-03_15:02:08 Power.Haus energy: 8269.9 kWh
2024-02-03_15:03:31 Power.Haus energy: 8269.9 kWh
2024-02-03_15:03:36 Power.Haus energy_export: 319.6
2024-02-03_15:14:19 Power.Haus energy: 8270 kWh

Ich habe auch versucht mit "get Power.Haus meter ..." irgendwie die energy_export Werte zu bekommen. Habe es  aber nicht hinbekommen.

Gruß
Fred

rudolfkoenig

Dake fuer den Hinweis.
Ich habe den Ausdruck "hinter dem "$meter_type_text" Absatz" falsch interpretiert, und mangels Testdaten auch nicht getestet.
Jetzt kommt ein zweiter Versuch, bitte pruefen.

redFred

Danke, für den Fix. Die kWh Einheit ist wieder im Reading enthalten :D.

2024-02-06_14:14:56 Power.Haus energy: 8295.2 kWh
2024-02-06_14:15:01 Power.Haus energy_export: 332.4 kWh
2024-02-06_14:26:51 Power.Haus energy_export: 332.5 kWh
2024-02-06_14:51:09 Power.Haus energy: 8295.3 kWh

Danke & Gruß
Fred


redFred

Ein Punkt hat mich an der Unterstützung des Qubino Smart Meters noch gestört.
Ich konnte die exportierte Energiemenge nicht per "get <device> meter <scale>" abfragen.
Die mit "meterSupported" gelieferten Scales geben nur jeweils die importierten Werte zurück.
Ich habe deswegen für mich ein paar kleine Zusätze in der 10_ZWave.pm gemacht.

# diff 10_ZWave.pm 10_ZWave.orig
1936,1937d1935
<   } elsif ($scale = 20) {
<     return ("",sprintf('0180'));
1977,1979d1974
<   }
<   if($meter_rate_type > 0) {
<     push (@unit_text, "20:kWh_export") if($scale & 0x01);

Damit bekomme ich jetzt bei der "meterSupported" Abfrage ein "20:kWh_export" zurück falls der "$meter_rate_type" > 0 ist, also das Device "export" oder "import und export" liefert und der Scale "energy" unterstützt wird.
Mit "get <device> meter 20" wird mir jetzt auch die exportierte Energiemenge angezeigt.

Hier ein log Eintrag mit verbose=5:
2024.02.07 18:54:19 5: ZWDongle_Write 00131e033201802517 (xxxxxxxx)
2024.02.07 18:54:19 5: DevIo_SimpleWrite ZWAVE1: 010a00131e0332018025177a
2024.02.07 18:54:19 5: ACK received, WaitForAck=>2 for 010a00131e0332018025177a
2024.02.07 18:54:19 5: device ack reveived, removing 010a00131e0332018025177a from dongle sendstack
2024.02.07 18:54:19 4: ZWDongle_Read ZWAVE1: rcvd 0004001e0a3202412400000d2b0000 (request APPLICATION_COMMAND_HANDLER), sending ACK
2024.02.07 18:54:19 5: ZWAVE1: dispatch 0004001e0a3202412400000d2b0000

Damit bin ich jetzt glücklich :-)

Gruß
Fred

rudolfkoenig

ZitatIch habe deswegen für mich ein paar kleine Zusätze in der 10_ZWave.pm gemacht.
Wie bist Du auf die Werte 20 und 80 gekommen?
Welche Version hat deine METER Klasse?

redFred

Ich habe gerade mal ein "get <device> versionclassesall" gemacht und beim Qubino Smart Meter folgendes unter den Attribut vclasses gefunden:
ASSOCIATION:2 ASSOCIATION_GRP_INFO:2 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:4 MANUFACTURER_SPECIFIC:2 METER:4 POWERLEVEL:1 SECURITY:1 SECURITY_S2:1 SUPERVISION:1 TRANSPORT_SERVICE:2 VERSION:2 ZWAVEPLUS_INFO:2

Ich hoffe das ist die gewünschte Info.

Die 80 habe ich in einem Forum gefunden: https://forum.z-wave.me/viewtopic.php?t=35552
Dort wird auch die 40 zum abfragen der importierten Werte erwähnt. Das habe ich auch als raw Daten testhalber geschickt. Funktioniert auch, liefert aber die gleiche Wert wie mit Scale 00 und hat somit in meinen Augen keinen Mehrwert.
 
Die 20 zum Abfragen habe ich mir ehrlich gesagt einfach aufgrund der Analyse der meterSupported sub überlegt.
Wenn ich die meterSupported sub richtig verstehe bekommt man auf Bit Ebene in maximal zwei Bytes die Information ob ein Meter Type unterstützt wird oder nicht. Zwei Bytes wären dann maximal 16 Typen. Somit sollte das nie mit der 20 kollidieren. Ist aber wie gesagt nur meine Überlegung aufgrund meines (hoffentlich richtigen) Verständins der meterSupported sub. Ich habe nichts dazu gefunden wie bei meterSupported zwischen importierten und exportierten Werten bei den Meter Typen unterschieden werden kann.

Gruß
Fred

redFred

Ich habe gerade nochmal gesucht und bin auf eine "Software Design Specification" der Z-Wave Alliance gestoßen. 
Dort ist für das Meter Get Command im Kapitel 4.58.3 ein Überblick für die Verwendung der Bytes enthalten.
Im dritten Byte sind die ersten beiden Bit für den Rate Type und die nachfolgenden 3 Bit für den Scale. Die restlichen 3 Bit sind reserved.
Die 80 ergibt sich dann aus rate type = 2 (für Export), scale type = 0 (für energy) und reserved = 0.

Gruß
Fred

rudolfkoenig

ZitatIch habe gerade nochmal gesucht und bin auf eine "Software Design Specification" der Z-Wave Alliance gestoßen.
Kannst Du mir bitte einen Link zu diesem Dokument zeigen, alles was ich finde ist veraltet (bis METER V3) oder zu kurz.

Ich wuerde das Feature eher als "get dev meter X [export]" implementieren: ist nicht hartkodiert auf eine Einheit, der Benutzer muss weniger rechnen, und die Erweiterung von meterSupported ist auch nicht notwendig. Apropos: was liefert meterSupported bei dir zurueck?

redFred

Hier der Link (der lädt bei mir direkt ein pdf herunter):  https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj78N-RgpuEAxVCh_0HHU9MAX8QFnoECB8QAQ&url=https%3A%2F%2Fsdomembers.z-wavealliance.org%2Fdocument%2Fdl%2F638&usg=AOvVaw0LcV7lWgCkI2iYYg9EA3gt&opi=89978449

In Kapitel 4.58 ist die Beschreibung für Meter Command Class version 4

mein "get <device> meterSupported" liefert folgendes:
meterSupported:type:energy, both import and export, resetable:yes, scales: 0:kWh 1:kVAh 2:W 4:V 5:A 6:PowerFactor 8:kVar 9:kVarh 20:kWh_export

Der "20:kWh_export" Eintrag am Ende ist das von mir dazu gebastelte :-)

rudolfkoenig

ZitatHier der Link
Vielen Dank. Stellt sich raus, dass ich dieses Dokument auch habe, es hat sich bloss hinter einer alten Version verteckt. Die Alte habe ich jetzt geloescht.

"get meter" habe ich jetzt erweitert:
Zitatmeter [scale [export|import]]
    return the meter report for the requested scale.
    Note: protocol V1 does not support the scale parameter, the parameter will be ignored and the default scale will be returned.
    For protocol V2 and higher scale can be specified as integer or text, see the output ot the meterSupported command.
    If the scale parameter is omitted, the default unit will be reported.
    export/import is only valid for protocol V4 or higher.