Neues Modul: Easymeter (ersetzt durch 47_OBIS)

Begonnen von Crawler, 25 Januar 2016, 16:19:10

Vorheriges Thema - Nächstes Thema

willybauss

Hi Markus,
die Config wäre nicht schlecht, damit man weiß, worüber man redet. Ich konnte Mehrfacheinträge beheben, indem ich für alle userReadings einen Trigger gesetzt habe (danke an Stefan für den Tipp). Das behebt dann auch automatisch eine evtl. falsch ausgeführte Reihenfolge, in der die userReadings abgearbeitet werden - was wiederum eine Ursache für die Nullwerte sein könnte.

Das mit der CPU-Last beim "top" hatte ich auch bereits festgestellt. In Antwort #63 hatte ich ja schon beschrieben, wie dasselbe Problem beim SMLUSB-Modul gelöst werden kann. Ich habe mir dieselbe Lösung in eine etwas ältere Version des OBIS-Moduls eingebaut und sie funktioniert - top-Werte nicht mehr von denen ohne OBIS-Modul zu unterscheiden. Dummerweise hat eine stumpfsinnige Kopie dieser Lösung in die aktuelle OBIS-Version nicht geklappt: das Modul startet nicht mehr. Stefan kennt bereits die Details und will sich das Ganze mal ansehen.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

KölnSolar

ich glaub nicht, dass es an meiner Config liegt:

define zaehler OBIS /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller_D-if00-port0@9600,7,E,1 Hager
#attr zaehler interval 60
attr zaehler room Energie
attr zaehler channels {"21"=>"Leistung_W1","41"=>"Leistung_W2","61"=>"Leistung_W3","31"=>"Strom_I1","51"=>"Strom_I2","71"=>"Strom_I3","32"=>"Spannung_U1","52"=>"Spannung_U2","72"=>"Spannung_U3","1"=>"Momentanleistung"}
attr zaehler userReadings VLeistung_W1:Leistung_W1 { ReadingsVal("zaehler","Leistung_W1",0) }, \
                          VLeistung_W2:Leistung_W2 { if (ReadingsVal("WR", "Wert_WR1_16", 0) + ReadingsVal("zaehler","Leistung_W2",0) > 0) \
  {ReadingsVal("WR", "Wert_WR1_16", 0) + ReadingsVal("zaehler","Leistung_W2",0)} else { 0 } }, \
  VLeistung_W3:Leistung_W3 { if (ReadingsVal("WR", "Wert_WR2_16", 0) + ReadingsVal("zaehler","Leistung_W3",0) > 0) \
  {ReadingsVal("WR", "Wert_WR2_16", 0) + ReadingsVal("zaehler","Leistung_W3",0)} else { 0 } }



Grüße
Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

willybauss

#77
ok, Momentanleistung ist also kein userReading, sondern kommt direkt vom Zähler. Du könntest es mal mit

event-min-interval .*:5

versuchen: alle Events gleichen Typs werden nicht öfter als alle 5 Sekunden durchgelassen.

global dupTimeout wäre evtl. auch einen Versuch wert.


Dennoch stellt sich die berechtigte Frage, woher diese "Echos" überhaupt kommen.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

osid-timo

Hallo,
den OBIS Ansatz finde ich sehr Interessant!
Momentan nutze ich auf einem separaten Raspi B den VZLOGGER aus dem Volkzähler Projekt mit einem Lesekopf von Udo
und dem FHEM VZLOGGER Modul auf meinem Haupt Raspi 2, leider ist der VZLOGGER  aus dem Volkzähler zum Lesen nicht sehr stabil und stellt immer wieder seinen httpd Kanal ein.
Ich habe einen EasyMeter Q3CA1261

wie muss ich das define xx OBIS  /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_0092CCBD-if00-port0@9600,8,N,1  <Zähler> realisieren, um damit die Zählerdaten richtig auszulesen?
meine Versuch waren  bis jetzt erfolglos, es gibt keine Readings, die ich brauchen kann


Gruß Osid-timo
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

Icinger

#79
1) Nimm bitte das Modul, das ich hier gerade angehängt habe.
Das im Repo hat ein paar Fehler drinnen, ich kann erst morgen oder übermorgen ein Update comitten.

2) Sicher, dass deine Schnittstelle 8N1 läuft? Ich vermute eher 7E1!
Damit wäre die definition dann:
define xx OBIS  /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_0092CCBD-if00-port0@9600,7,E,1
Sehr wahrsacheinlich brauchst du keinen Metertype dahinter.

Wenn dann immer noch nichts kommt, bitte Verbose 5 setzen und mal ins Logfile schauen.
Wenn da was sinnvolles ankommt, schick mir mal ein Log.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

osid-timo

Hallo Stefan,
leider nix gebracht
beim VZLOGGER bekomme ich mit 8,N,1 gute Ergebnisse bei meinem Zähler
mit dem OBIS Modul ist es egal ob 8,N,1 oder 7,E,1 ist das Ergebnis wie im Screenshot
Gruß Osid-timo
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

willybauss

Hi Osid-timo,

Du solltest uns mehr über Deinen Zähler sagen. Das 2. Bild war 7E1, das 1. war ? (Bild oben abgeschnitten). Daten sehe ich im 1. Bild auch keine.

Braucht der Zähler ein Init-Signal (welches?), oder plaudert er von sich aus drauf los?

Wäre nett, wenn Du die Konfiguration in Textform beilegen könntest.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Icinger

7E1 ist es nicht, stimmt. Das sieht man an den zerstückelten Daten im Bild. Sieht nach typischem Parity-Problem aus.
Also vlt. doch 8N1.

Dann Bitte ein Log davon mit V5.
Und besser keine Screenshots, sondern Code-Fragmente hier.
Also zB mal ein >list Hausstrom_Zaehler< ;)

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

osid-timo

Hallo,
beim VZLOGGER nutze ich folgende Konfiguration:
"meters" : [
    {
    "enabled" : true , // true, Beginn EasyMeter Q3C Zähler
    "protocol" : "sml",
    "baudrate" : 9600,
    "device" : "/dev/ttyUSB0",
    "parity" : "8N1",
    "pullseq" : "2f3f210d0a", // HEX Darstellung der Pullsequenz
    "interval" : 10, // Wartezeit bis zum nächsten Pull
"channels": [{

das bedeutet für mich 8,N,1 und wie du vermutest eine Pullsequenz, aber wie kann ich die dem OBIS Modul mitgeben?
Gruß Osid-timo
FHEM Pi3: 1* CUL, 30* Homematic, 10* EnOcean
FHEM Pi3: IR-Lesekopf, BT->SMA
FHEM Pi3: ZHK, 1-wire, 1* VBus   Resol DeltaSol BS

Icinger

Zitat"protocol" : "sml",

Da liegt der Hund begraben.
OBIS versteht kein SML (was nicht heisst, das es nicht vielleicht irgendwann mal kommt, aber da will ich nichts versprechen)....
Da bräuchtest du das SMLUSB-Modul statt dem OBIS.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Crawler

#85
Habe heute einen merkwürdigen Effekt nach dem Update festgestellt
Nach Update des raspi und fhem funktionierte nix mehr daher habe ich eine alte cfg geladen.

Wenn ich jetzt den OBIS definiere stürzt FHEM ab.

*Serial ist garantiert aus
*Signal auf RX hab ich auch schon entfernt
*GPIO Modul ist auch aus
*Dateien haben alle die richtigen Rechte
mehr fällt mir nicht ein

Keine Fehlermeldung nix  :'(
FHEM auf Raspi + HMLan + 14 Aktoren + OBIS(Strom) über GPIO

willybauss

Stefan will heute noch eine neue Modulversion einchecken; evtl. morgen nochmal updaten.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Icinger

So, sorry, hatte bis heute gedauert....
Hab die neue Version mit dem Attribut "pollingMode" grade eingecheckt.
Falls die Prozessorlast bei Systemen, wo der Meter ständig sendet, zu hoch ist, kann hiermit von eventbasierter Auswertung auf den Poll-Mode umgeschaltet werden.
Damit wird die Schnittstelle dann nur ca. alle 5 Sekunden abgefragt.

lg, Stefan

@Crawler: Was steht bei Verbose5 im Log?
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

KölnSolar

Hi Stefan,

das neue Attribut hat scheinbar keine Auswirkung auf die Performance(bei mir). Ob on oder off, mein Rpi rödelt. Im Gegensatz zu dem Zustand, wenn ich FHEM ohne den Zähler und OBIS laufen lasse. Kann ich dazu noch etwas konkretes testen ?

Die unschönen Nullwerte bei der Gesamtleistung(channel "1") treten auch immer noch auf. Nicht doch besser für Zähler ohne Ausgabe dieses channels den Wert weglassen und stattdessen über ein userReading definieren ?

Grüße
Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Icinger

Hallo Markus,

Zu 1: Interval hast du gesetzt? Und pollingMode auf "on"?
Wenn ja, dann mach mal bitte ein V4. Dann sollte eigentlich wirklich nur alle <interval> Sekunden Daten in Log geschrieben werden.

Zu 2:
ZitatDie unschönen Nullwerte bei der Gesamtleistung(channel "1") treten auch immer noch auf.
Welche Nullwerte? Dürfte eigentlich nicht sein, ich aktualisiere eigentlich nur jene Readings, die auch über die Schnittstelle reinkommen.
Ausser, du hast als MeterTyp "Hager", dann werden alle 3 Phasen aufsummiert und ins Reading "power" geschrieben.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho