SML Stromzähler per USB Schreib-Lesekopf?

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

Vorheriges Thema - Nächstes Thema

Hungry

Jetzt startet FHEM nicht mehr.
Fehlermeldung nun:
Undefined subroutine &main::DevIo_CloseDev called at ./FHEM/70_SMLUSB.pm line 88 , <$sfh> line 213

matzefisi

Mmmh das ist sehr komisch. Ich habe schon vor bestimmt 3 Versionen auf das globale FHEM DevIo umgestellt und bei mir geht alles.
Welche Versionen der Module / FHEM setzt Du ein? Kannst Du mal einfach über das Webinterface oben in der Befehlszeile --> version <-- eingeben?

MfG
Matthias

Edit: Ich habe gerade noch mal die Änderungen von gestern Abend gecheckt. (https://github.com/matzefisi/fhem-modules/commits/develop/70_SMLUSB.pm) Ich habe nur zwei mal das Wort 'our' durch 'my' ersetzt. Daran kann es also nicht gelegen haben.

Hungry

Fhem startet leider nicht mehr.
Kann ich im Terminal sehen welche Version ich einsetze?

Woran es noch liegen kann, habe vorhin Dein Script angepasst, auf die aktuelle Version.
Davor habe ich die Devices mit save.cfg in FHEM gespeichert.
Evtl. hat er Probleme damit und es lief soweit, bis ich jetzt halt gespeichert habe.

matzefisi

Du kannst Dein FHEM ja problemlos wieder zum laufen bringen, wenn Du die "define" Einträge für die SMLUSB Devices aus der Datei fhem.cfg und log/fhem.save manuell entfernst.

Was heißt Du hast das Script angepasst? Hast Du es einfach heruntergeladen und in das entsprechende Verzeichnis bei Dir gespeichert? Oder hast Du selbst die 70_SMLUSB.pm editiert?

Das mit dem Speichern sollte eigentlich kein Problem sein. Ich würde wirklich vorschlagen, alles was mit SMLUSB zu tun hat aus der fhem.cfg und log/fhem.save entfernen und dann nochmal neu versuchen.

Hungry

Entschuldigung aber wenn ich die Error-Zeile von Anfang an getippt hätte, dann wäre es klarer gewesen:

Starting 1-Wire FTP server: owftpdUndefined subroutine &main::DevIo_CloseDev called at ./FHEM/70_SMLUSB.pm line 88, <$fh> line 214.

Die Fehlermeldung taucht auch in Deinem alten Script auf, auch wenn an anderer Stelle.

Ich habe auch noch einen OneWire-Hostadapter am Raspberry betrieben.
Zur Zeit aber abgesteckt.

Wie kann ich diesen Konflikt lösen.

matzefisi

Hi Hungry,

ok, ich habe anscheinend was wichtiges vergessen:
require "$attr{global}{modpath}/FHEM/DevIo.pm";
Damit wird der Code aus DevIo.pm mit in das Modul geladen. Da ich aber schon ein anderes Modul im Einsatz habe, welches DevIo verwendet, war es bei mir im FHEM schon geladen und daher hat es bei mir funktioniert. Ich habe die Änderung hinzugefügt und Du kannst sie hier herunterladen:
https://github.com/matzefisi/fhem-modules/blob/develop/70_SMLUSB.pm

MfG
Matthias

Hungry

Hallo matzefisi,

habe Dein Script vollständig so übernommen.
Stürtzt jetzt nicht mehr ab.
Habe vorher die fhem.save geleert
und auch in der fehm.cfg die zwei Eintragungen:

define WP SMLUSB /dev/ttyUSB0@9600 EHZ
attr WP event-min-interval *:30
define HH SMLUSB /dev/ttyUSB1@9600 EHZ
attr HH event-min-interval *:30

gelöscht und wieder neu angelegt.

Leider habe ich jetzt wieder das Problem,
dass immer wieder Werte von einem Zähler und dann vom anderen Zähler angezeigt werden.
Der Define-Befehl stimmt doch oder?
Habe sicherheitshalber die zwei USB-Köpfe direkt an die zwei USB-Anschlüsse des Raspberrys gehängt.

Nachtrag: Es ist nur bei WP (USB0) so, dass er ab und zu die Werte vom USB1 anzeigt. Der HH zeigt nur Werte vom Zahler Haushalt also USB1 an und funktioniert also!
Außerdem stimmen die Werte beim WP ab und zu nicht.

oniT

Hallo Matthias und all die anderen,

ich muss mich hier auch mal mit dazwischen schalten.

ZitatDer Itron itron ACE3000 sendet definitiv kein SML.

Ich habe auch diesen ACE3000 und diesen Artikel darüber gefunden:

http://kuehnast.com/s9y/archives/460-stromzaehler-auslesen.html

Würde diese im Artikel genannte Konstellation mit fhem und dem 70_SML.pm Modul funktionieren? Kennt sich damit jemand aus? Also mal unabhängig vom Preis der Komponenten wäre dies ja die einfachste Möglichkeit, zumindest für mich ;-)

Danke

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

matzefisi

Hi Hungry,

komisch. Aber ich gucke es mir heute Abend nochmal an. Ich habe da schon eine Ahnung. An dieser Stelle nochmal: Ich bin ein absoluter Perlneuling! :)

@oniT: Das was Du da verlinkt hast ist aber leider SML und es geht auch nicht um den ACE 3000 sondern um einen EHZ/EHL der SML spricht.
Der ACE 3000 gibt soetwas wie das hier aus:

/ACE0\3k260V01.18
F.F(00)
C.1(1234567890123456)
C.5.0(00)
1.8.0(000285.4*kWh)
2.8.0(000120.1*kWh)
!

Vorher muss man den ACE 3000 aber noch zum senden überreden. Und zwar mit folgender Zeichenkette:
/?!
Die Geräte, die in Deiner verlinkten Seite erwähnt werden, sind nichts anderes als ein USB(RS485)-Lesekopf und ein umsetzer von RS485 auf Netzwerk.

Die Antwort auf Deine Frage also: Für den ACE 3000 leider nein.

ABER: Den ACE 3000 habe ich noch nicht von der Featureliste gestrichen. Wenn SML erstmal sauber läuft, dann kümmere ich mich auch um solche Zähler.

MfG
Matthias


matzefisi

Hallo Hungry,

dank justme1968 habe ich jetzt hoffentlich das Problem gelöst.

Neue Version steht im Development Branch im GitHub bereit. Einfach wie gehabt dort runterladen und dann per "reload 70_SMLUSB" das Modul neu im FHEM laden.

MfG
Matthias

Hungry

Hallo Matthias,

es funktioniert!!!
Super und Danke!
Habe jetzt noch ein Logfile für jeden Zähler angelegt.
Welches Plot-File verwendest Du?

Was mir noch aufgefallen ist, State steht auf Einspeisen.


(siehe Anhang / see attachement)


Und folgendes erscheint noch im Log:

2013.10.02 18:59:30 0: Server started with 52 defined entities (version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3008 2013-04-01 11:19:27Z rudolfkoenig $, pid 18407)
Use of uninitialized value in pattern match (m//) at ./FHEM/70_SMLUSB.pm line 201.
Use of uninitialized value in pattern match (m//) at ./FHEM/70_SMLUSB.pm line 201.
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE $/ at fhem.pl line 3226.

Update:
Die Fehlermeldung erscheint im Log von FHEM nicht mehr, weiß nicht warum.
Wenn der Raspberry bootet erscheint diese Meldung aber weiterhin im Bootlog.
Das bezieht sich ja auf diese Zeile:
 if ($hash->{helper}{PARTIAL} =~ m/1B1B1B1B1A[0-9A-F]{6}$/)

oniT

Hallo Matthias,

ZitatDie Antwort auf Deine Frage also: Für den ACE 3000 leider nein.

ABER: Den ACE 3000 habe ich noch nicht von der Featureliste gestrichen. Wenn SML erstmal sauber läuft, dann kümmere ich mich auch um solche Zähler.

Ok. Danke für die Info.

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Dennis D.

Also ich bekomme nun leider keine korrekten Werte mehr. Angeblich habe ich nun bei meinem EHZ einen Zählerstand von 29 und eine Momentanleistung von 19558 Watt.

LG,
Dennis
FHEM 5.5 auf RPi Rev. B 512 mit HMLAN (HM-CFG-LAN)

CUL_HM: HM-LC-Bl1PBU-FM,HM-LC-SW1-BA-PCB,HM-LC-SW4-SM,HM-LC-Sw1PBU-FM,HM-OU-LED16,HM-PB-2-WM55,HM-RC-KEY3-B,HM-SEC-KEY,HM-SEC-RHS,HM-SEC-SC,HM-SEC-SD,HM-WDS10-TH-O,HM-WDS40-TH-I

OWDevice: DS18B20,DS2438

matzefisi

Hallo zusammen,

ich habe gerade die aktuellste Version vom SMLUSB Modul veröffentlicht.

https://github.com/matzefisi/fhem-modules/releases/tag/v0.1

Das Parsing wurde komplett geändert, so dass SML jetzt (zumindest zum größten Teil) intelligent ausgelesen wird. Vorher wurde es mehr oder weniger statisch und unnötig kompliziert ausgelesen.

@Dennis: Damit sollte sich dein Problem eigentlich auch erledigt haben.

Bitte sichert Euch Eure lokale 70_SMLUSB vorher nochmal.

Ach ja und der Wert DeviceType ist nicht länger nötig. Also einfach "define NAME SMLUSB /dev/usbsml@9600"

Über Rückmeldungen würde ich mich sehr freuen!

MfG
Matthias

Hungry

#59
Also irgendwie wird mir jetzt die momentane Leistung nicht mehr angezeigt.

Außerdem steht im Terminal:

^* matches null string many times in regex: marked by <--HERE$/ at fhem.pl line 3423.

Der Schriftsatz ist im Log verfälscht:
2013-10-26_15:56:30 HH Momentanleistung: 497.00
2013-10-26_15:56:30 HH Zählerstand Bezug Total: 4322.07
2013-10-26_15:56:30 HH Zählerstand Tarif 1 Bezug: 2305.47
2013-10-26_15:56:30 HH Zählerstand Tarif 2 Bezug: 2016.60
2013-10-26_15:57:23 HH Zählerstand-Bezug-Total: 4322.07
2013-10-26_15:57:23 HH Zählerstand-Tarif-1-Bezug: 2305.48

Da ist jetzt ein Paragraphenzeichen und eine Wurzel drin.