SMLUSB: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Corrected some display problems.)
Zeile 16: Zeile 16:
* Auswertung und Darstellung als Reading der folgenden Obis Codes:
* Auswertung und Darstellung als Reading der folgenden Obis Codes:
<code>
<code>
'77070100010800FF' => 'Zählerstand-Bezug-Total'
'77070100010800FF' => 'Zählerstand-Bezug-Total'
'77070100020800FF' => 'Zählerstand-Lieferung-Total'
'77070100020800FF' => 'Zählerstand-Lieferung-Total'
'77070100010801FF' => 'Zählerstand-Tarif-1-Bezug',
'77070100010801FF' => 'Zählerstand-Tarif-1-Bezug',
'77070100020801FF' => 'Zählerstand-Tarif-1-Lieferung'
'77070100020801FF' => 'Zählerstand-Tarif-1-Lieferung'
'77070100010802FF' => 'Zählerstand-Tarif-2-Bezug',
'77070100010802FF' => 'Zählerstand-Tarif-2-Bezug',
'77070100020802FF' => 'Zählerstand-Tarif-2-Lieferung'
'77070100020802FF' => 'Zählerstand-Tarif-2-Lieferung'
'770701000F0700FF' => 'Momentanleistung',
'770701000F0700FF' => 'Momentanleistung',
'77070100100700FF' => 'Momentanleistung'
'77070100100700FF' => 'Momentanleistung'
</code>
</code>


Zeile 37: Zeile 37:
== Define ==
== Define ==
<code>
<code>
  define <name> SMLUSB <serial device>@<baudrate>
define <name> SMLUSB <serial device>@<baudrate>
</code>
</code>


Zeile 43: Zeile 43:
'''Beispiel:'''
'''Beispiel:'''
<code>
<code>
  define powerZaehler SMLUSB /dev/usbsml@9600
define powerZaehler SMLUSB /dev/usbsml@9600
</code>
</code>


Zeile 49: Zeile 49:
Im Prinzip ist nur ein Attribut wichtig. Und zwar event-min-interval. Dieses wird beim define automatisch angelegt und auf den Wert 30 Sekunden gesetzt. Damit wird verhindert, dass zu viele Events generiert werden.
Im Prinzip ist nur ein Attribut wichtig. Und zwar event-min-interval. Dieses wird beim define automatisch angelegt und auf den Wert 30 Sekunden gesetzt. Damit wird verhindert, dass zu viele Events generiert werden.
<code>
<code>
attr powerZaehler event-min-interval .*:30
attr powerZaehler event-min-interval .*:30
</code>
</code>


Zeile 68: Zeile 68:


<code>
<code>
attr power_Zaehler userReadings energy_current_overall:energy_current \
attr power_Zaehler userReadings energy_current_overall:energy_current \
{my $solarpower = ReadingsVal("power_Wechselrichter","AC.Power",0);; \
{my $solarpower = ReadingsVal("power_Wechselrichter","AC.Power",0);; \
my $mainpower = ReadingsVal("power_Zaehler","energy_current",0);; $solarpower+$mainpower;;}  
my $mainpower = ReadingsVal("power_Zaehler","energy_current",0);; $solarpower+$mainpower;;}  
</code>
</code>


Zeile 77: Zeile 77:


<code>
<code>
define statisticsPower statistics power_Zaehler
define statisticsPower statistics power_Zaehler
attr statisticsPower deltaReadings Zählerstand-Tarif-1-Bezug,Zählerstand-Tarif-1-Lieferung
attr statisticsPower deltaReadings Zählerstand-Tarif-1-Bezug,Zählerstand-Tarif-1-Lieferung
attr statisticsPower minAvgMaxReadings Momentanleistung
attr statisticsPower minAvgMaxReadings Momentanleistung
</code>
</code>



Version vom 27. November 2015, 15:35 Uhr

SMLUSB
Zweck / Funktion
Verbrauchswerte aus SML Smartmetern per IR Lesekopf auslesen
Allgemein
Typ Inoffiziell
Details
Dokumentation siehe Forum
Support (Forum) Codeschnipsel
Modulname 70_SMLUSB.pm
Ersteller matzefisi (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Das Modul SMLUSB ermöglicht mit Hilfe eines USB-Infrarot-Lesekopfes das Auslesen von Smartmetern, die ihre Daten im binären SML (Smart Metering Language) Format über die Infrarotschnittstelle ausgeben.

Bislang wurde das Module nur mit dem Volkszähler USB-Schreib und Lesekopfes vom Volkszählerprojekt [1] getestet, sollte aber auch mit anderen seriellen IR-Empfängern gehen. Erfahrungen dazu bitte im Forum posten.

Features

  • Auswertung der Energierichtung (Bezug / Einspeisung)
  • Auswertung und Darstellung als Reading der folgenden Obis Codes:

'77070100010800FF' => 'Zählerstand-Bezug-Total' '77070100020800FF' => 'Zählerstand-Lieferung-Total' '77070100010801FF' => 'Zählerstand-Tarif-1-Bezug', '77070100020801FF' => 'Zählerstand-Tarif-1-Lieferung' '77070100010802FF' => 'Zählerstand-Tarif-2-Bezug', '77070100020802FF' => 'Zählerstand-Tarif-2-Lieferung' '770701000F0700FF' => 'Momentanleistung', '77070100100700FF' => 'Momentanleistung'

Aktuelle Version

Die aktuelle Version ist zur Zeit noch in meinem eigenen Github Repository abgelegt.
https://github.com/matzefisi/fhem-modules/blob/master/70_SMLUSB.pm

Fragen und Anregungen bitte im Forum abliefern:
http://forum.fhem.de/index.php/topic,14117.0.html

Um die Version zu installieren, ladet die Datei bitte von dort herunter und kopiert sie in Euer FHEM Verzeichnis.

Define

define <name> SMLUSB <serial device>@<baudrate>


Beispiel: define powerZaehler SMLUSB /dev/usbsml@9600

Attribute

Im Prinzip ist nur ein Attribut wichtig. Und zwar event-min-interval. Dieses wird beim define automatisch angelegt und auf den Wert 30 Sekunden gesetzt. Damit wird verhindert, dass zu viele Events generiert werden. attr powerZaehler event-min-interval .*:30

Readings

Je nach Smartmeter-Model werden verschiedene Readings ausgegeben. Folgende Readings werden aktuell unterstützt:

Momentanleistung

  • Zählerstand-Bezug-Total
  • Zählerstand-Lieferung-Total
  • Zählerstand-Tarif-1-Bezug
  • Zählerstand-Tarif-1-Lieferung
  • Zählerstand-Tarif-2-Bezug
  • Zählerstand-Tarif-2-Lieferung

Tips und Tricks

Eigenverbrauch PV-Anlage

Falls eine PV-Anlage oder sonstige Erzeuger oder auch weitere Stromzaehler vorhanden sind, können verschiedene Werte über Userreadings miteinander verrechnet werden.

attr power_Zaehler userReadings energy_current_overall:energy_current \ {my $solarpower = ReadingsVal("power_Wechselrichter","AC.Power",0);; \ my $mainpower = ReadingsVal("power_Zaehler","energy_current",0);; $solarpower+$mainpower;;}

Stunden-, Tages-, Monats- und Jahreswerte

Mit Hilfe des statistics Modul ist es nun einfach möglich, sich Stunden-, Tages-, Monats- und Jahreswerte ausgegeben zu lassen:

define statisticsPower statistics power_Zaehler attr statisticsPower deltaReadings Zählerstand-Tarif-1-Bezug,Zählerstand-Tarif-1-Lieferung attr statisticsPower minAvgMaxReadings Momentanleistung

Beispielausgabe:

Reading Wert Timestamp
Momentanleistung 274.90 2014-07-09 20:37:34
Momentanleistung_Gesamt 301.9 2014-07-09 20:37:34
Zählerstand-Bezug-Total 4289.76 2014-07-09 20:37:34
Zählerstand-Lieferung-Total 7726.96 2014-07-09 20:37:34
Zählerstand-Tarif-1-Bezug 4289.76 2014-07-09 20:37:34
Zählerstand-Tarif-1-Lieferung 7726.96 2014-07-09 20:37:34
statMomentanleistungDay Min: 199.2 Avg: 276.2 Max: 278.3 (since: 2014-07-09_20:34:45 ) 2014-07-09 20:37:02
statMomentanleistungMonth Min: 199.2 Avg: 276.2 Max: 278.3 (since: 2014-07-09_20:34:45 ) 2014-07-09 20:37:02
statMomentanleistungYear Min: 199.2 Avg: 276.2 Max: 278.3 (since: 2014-07-09_20:34:45 ) 2014-07-09 20:37:02
statZählerstand-Tarif-1-Bezug Hour: 0.0 Day: 0.0 Month: 0.0 Year: 0.0 (since: 2014-07-09_20:34:45 ) 2014-07-09 20:37:34
statZählerstand-Tarif-1-Lieferung Hour: 0.0 Day: 0.0 Month: 0.0 Year: 0.0 (since: 2014-07-09_20:34:45 ) 2014-07-09 20:37:34

ToDo

  • Saubere Dokumentation im Quellcode
  • Code aufräumen
  • Performanceprobleme mit der Funktion SMLUSB_Read lösen (Es liegen permanent Daten am seriellen Bus an, so dass SMLUSB_Read kontinuierlich ausgeführt wird und so in APPTIME immer an erster Stelle steht.)
  • Übernahme in das SVN Repository
  • Feature: Lesertypen wie den ACE 3000 unterstützen Link

Links