SML Stromzähler per USB Schreib-Lesekopf?

Begonnen von matzefisi, 04 August 2013, 14:14:48

Vorheriges Thema - Nächstes Thema

krikan

Zitat von: thd am 31 Dezember 2013, 16:34:06
An einem Fehler meinerseits. Die Zeile
   $po->error_char(1);
entfernen oder auskommentieren...

Habe es so auch nicht ans laufen auf der Fritzbox bekommen. Nach Austausch Deiner Schnittstellenintialisierung durch Nachfolgendes läuft es mit meinen Hager und EMH-Zählern:
$po->reset_error() || Log 1, "USBEHZ reset_error";
$po->baudrate(9600) || Log 1, "USBEHZ could not set baudrate";
$po->databits(7) || Log 1, "USBEHZ could not set databits";
$po->parity('even') || Log 1, "USBEHZ could not set parity";
$po->stopbits(1) || Log 1, "USBEHZ could not set stopbits";
$po->lookclear || Log 1, "USBEHZ could not set lookclear";
$po->dtr_active(1) || Log 1, "USBEHZ could not set dtr";
$po->rts_active(0) || Log 1, "USBEHZ could not set rts";
$po->write_settings || Log 1, "USBEHZ could not write_settings $dev";


Zitat von: thd am 31 Dezember 2013, 16:34:06
Im Anhang meine aktuelle Version des Moduls. Die erste Fassung hat für meinen Geschmack zu viel Rechenzeit verbraucht, der Zähler schickt schließlich Tag und Nacht alle 4 Sekunden Daten. Ich habe ausgetüftelt, wie man mit geeigneten stty Parametern unter Linux den fhem-Prozess erst aufweckt wenn eine komplette Zeile übertragen wurde. Dadurch sinkt der CPU-Bedarf auf ca 1/10. Könnte sein, dass das so unter Windows nicht funktioniert. Sie Anmerkungen am Ende der Datei.

Gibt es auf der Fritz Box "stty"?
Auf der Fritzbox scheint es stty grds. zu geben: http://www.wehavemorefun.de/fritzbox/Stty
Habe den entsprechenden Aufruf mal in startfhem aufgenommen, aber kann keine Änderung mit Deinem ersten angepassten Modul feststellen. Fritzbox ist zu über 90% ausgelastet. Dein neues Modul habe ich noch nicht ausprobieren können, da es ohne Anpassung auf der Fritzbox nicht läuft.

thd

Zitat von: krikan am 08 Januar 2014, 17:36:49
Habe den entsprechenden Aufruf mal in startfhem aufgenommen, aber kann keine Änderung mit Deinem ersten angepassten Modul feststellen. Fritzbox ist zu über 90% ausgelastet. Dein neues Modul habe ich noch nicht ausprobieren können, da es ohne Anpassung auf der Fritzbox nicht läuft.

Das Problem mit der ursprünglichen Version war, dass FHEM für jedes einzelne Byte "aufgeweckt" wird und dann USBEHZ_Read nur ein Byte abholt (auch wenn mehr da sind) und wieder zurückkehrt. Das ist ein sehr ineffizientes Verfahren und hatte mein NAS zu ca. 50% ausgelastet.

Ich nehme an, dass einige FHEM-Module diese nachteilige Eigenschaft haben, aber wenn wie bei 70_USBWX.pm nur gelegentlich mal eine Zeile kommt, dann stört das nicht, aber bei einem Datensatz alle 4 Sekunden ist das was anderes.

Die neuere Fassung liest die Daten per "$po->streamline" zeilenweise ein und die stty-Einstellungen sorgen dafür, dass FHEM erst aufgeweckt wird, wenn eine komplette Zeile zum Lesen bereit ist. Aber ohne die richtigen stty-Einstellungen funktioniert der Code dann leider nicht mehr. Ich habe nicht leicht finden können, wie man die Einstellungen für den "Cooked"-Modus im Perl-Code vornehmen könnte.

krikan

Zitat von: thd am 08 Januar 2014, 18:11:32
Die neuere Fassung liest die Daten per "$po->streamline"

Danke, das war der entscheidende Hinweis! Habe es jetzt auch auf der Fritzbox ans Laufen bekommen. Auslastung sinkt direkt um ca. 25%.

Der stty Aufruf in der startfhem ist nicht so dolle. Mal schauen ob ich da noch was finden kann; sollte sich doch durch Perl ersetzen lassn. Oder kann hier noch jemand helfen?

strauch

Hallo,

morgen sollte auch mein USB Sensor kommen. Nun will ich den an die Fritzbox packen und per FHEM2FHEM mit meinem Rasbpi verbinden. Kann ich das letzte Modul so nehmen oder was für Veränderungen müssen auf der Fritz!Box stattfinden?

Danke schon mal an alle für das Modul, bin sehr gespannt.

Grüße

strauch
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

An diejnigen die USBEHZ mit der Fritzbox nutzen, ist es bei euch auch so das die Fritzbox unbekanntest Gerät zeigt? Bei mir findet FHEM auch kein USB Gerät. Habt ihr noch irgendwas an der Fritzbox gemacht?
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

thd

Zitat von: strauch am 19 Januar 2014, 16:41:01
An diejnigen die USBEHZ mit der Fritzbox nutzen, ist es bei euch auch so das die Fritzbox unbekanntest Gerät zeigt? Bei mir findet FHEM auch kein USB Gerät. Habt ihr noch irgendwas an der Fritzbox gemacht?

USBEHZ braucht als Software-Schnittstelle die Emulation einer seriellen Schnittstelle. Ich habe keine Ahnung von der FritzBox. Gewöhnlich erscheint nach Einstecken des Geräts beim Aufruf von dmesg eine Zeile mit dem Gerätenamen, z.B. ttyUSB0. Vielleicht hat die Fritz Box keinen Gerätetreiber für Deine Hardware. Vielleicht kannst Du mit

"lsusb"  oder
"mora /dev/bus/usb/devices" oder
"dmesg"

oder einem anderen Werkzeug die VID / PID des USB-Geräts ausfindig machen, z.B.: 067b:2303?

strauch

#96
Hallo thd,

danke für die Infos.... lsusb habe ich auch schon gemacht, da kommen folgende 3 Geräte, aber so richtig interpretieren konnte ich es nicht (Ist eine Fritzbox 7390):
BUS=002
DEV=001
VID=1d6b
PID=0001
CLS=09
SCL=00
SPEED='full'
VER='1.1'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00

BUS=002
DEV=002
VID=10c4
PID=ea60
CLS=00
SCL=00
SPEED='full'
VER='2.0'
ISOC=0
INUM=1
ICLS1=255
ISCL1=00

BUS=001
DEV=001
VID=1d6b
PID=0002
CLS=09
SCL=00
SPEED='hi'
VER='2.0'
ISOC=0
INUM=1
ICLS1=09
ISCL1=00


Ich muss das Ding mal rausziehen und das noch mal machen, kommen nur gerade nicht ran :-). Wenn ich den USB Fernanschluss aktiviere, kann er mir den Namen und Chipsatz des Geräts nennen ( Silicon Labs CP2104 USB to UART Bridge Controller ). Wobei die Frage ist ob man dafür einen passenden Treiber brauchen. Sonst habe ich da auch noch einen MacMini mit VMware stehen, nur die kann ja eigtl. kein USB.

Bei dmesg steht ja ne Menge interessant ist das:
Serial: 8250/16550 driver1 ports, IRQ sharing disabled
serial8250: ttyS0 at MMIO 0xb90a0000 (irq = 29) is a 16450


muss ich das Gerät einfach als ttyS0 ansprechen und gar nicht als USB Gerät?

Edit: Ok das hier ist der Schreib-Lesekopf:

BUS=002
DEV=002
VID=10c4
PID=ea60
CLS=00
SCL=00
SPEED='full'
VER='2.0'
ISOC=0
INUM=1
ICLS1=255
ISCL1=00


Aber wie komme ich damit darauf ob ein Treiber fehlt oder wie die Adresse ist?
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

#97
Zitat von: stenny73 am 08 Januar 2014, 15:06:44
Wo muss ich denn das

/bin/stty  -F /dev/ttyUSB0 9600 evenp crtscts cs7 inpck parmrk eol 10 icanon


Das muss einfach z.B. beim Rasbpi einfach per ssh in die commandozeile eingetragen werden. stty istein Programm um die serielle Schnittstelle zu konfigurieren. Ich hab es soweit hinbekommen das unter einem normalen debian der Schreib/Lesekopf funktioniert. Wird auch von fhem erkannt und als "connected" in der Log Datei angegeben. Mehr konnte ich noch nicht entlocken. Jetzt muss ich erstmal rausfinden ob der Kopf vom Zähler überhaupt irgendwas an Daten empfängt und dann mal schauen das ich es richtig in fhem eingebunden bekomme.

Beim rumexperimentieren der Adresse (um zu schauen ob er connected oder disconnected) hab ich folgenden Fehler erhalten (ich nutze die letzte Version von thd):
Can't call method "close" on an undefined value at ./FHEM/70_USBEHZ.pm line 176.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

Ich hab es dann auch zum laufen bekommen, allerdings dann doch mit dem SMLUSB Modul. Dachte erst ich brauch für den emh ehz auch das ehz Modul, aber dem ist nicht so.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

strauch

Zitat von: Dennis D. am 28 Oktober 2013, 19:58:05
Hi Matthias,

hast Du denn auch eine Idee, warum nur einmal ein Wert ausgelesen wird? Bekomme immer  nur einen Wert kurz nachdem ich FHEM gestartet hab. Es kommen jedoch keine neuen Werte. Hab den EHZ wie folgt definiert:

Hast du da schon eine Lösung dazu, bei mir bleibt das Logging manchmal ganz unvermittelt stehen und geht erst nach einem shutdown restart weiter. Überlege gerade ob ich mit einem Watchdog fhem auch neustarten kann, wenn an den Werten nix passiert.
Des weiteren steht bei mir auch alle Werte im fhem log ist das normal, kann ich das abschalten, das bläht die ganze Geschichte ja unnötig auf.
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

micomat

Zitat von: strauch am 21 Januar 2014, 09:14:56
Ich hab es dann auch zum laufen bekommen, allerdings dann doch mit dem SMLUSB Modul. Dachte erst ich brauch für den emh ehz auch das ehz Modul, aber dem ist nicht so.

Guter Hinweis :)
Muss ich auch mal testen.
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

Tom0711

Hallo,

ich habe einen emh ehz und diesen mittels SMLUSB eingebunden. Das funktioniert für die Bezugsrichtung auch gut, allerdings geht das reading "Momentanleistung" bei Einspeisung auf Werte über 300000 W.
Ich nehme an, das liegt daran, dass mit der signed/unsigned integer konvertierung beim Einlesen etwas schieg geht.

Ich bin leider völliger Neuling bei fhem und auch Perl gehört leider nicht zu den Programmier-/Skriptsprachen die ich beherrsche. Das werde ich ändern, aber momentan hätte ich gerne eine schnelle Lösung.
Hat jemand einen Tipp für mich?

MfG, Thomas

matzefisi

Hallo zusammen,

ich bin vor kurzem zum ersten Mal Vater geworden. Daher ist meine Zeit für fhem nun leider noch begrenzter. Aber ich versuche trotzdem mal zu helfen.

@Tom0711: Welchen Zähler hast Du genau? Also Typenbezeichnung...

MfG
Matzefisi

strauch

Zitat von: matzefisi am 07 März 2014, 08:06:08
Hallo zusammen,

ich bin vor kurzem zum ersten Mal Vater geworden.

Herzlichen Glückwunsch, ich kann das gerade gut nachvollziehen, ich bin in der gleichen Situation. Aber wenn die kleine mich anlacht ist FHEM auch ganz schnell vergessen ;-).
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Tom0711

Hallo, danke im voraus.

EMH eHZ-IW8E2A5L0EQ2P

Meine Tochter ist 4, aber die braucht auch Zeit