Hallo Zusammen,
irgendwie scheine ich mit meinem Stromzähler auf Kriegsfuss zu stehen. Hier ist ein wirklicher 1-wire Counter Chip verbaut.
#
# Stromzähler für Kellerbereich
#
define klS0Zaehler OWDevice 1D.XXXXXX000000 60
attr klS0Zaehler alias 02 Keller Stromverbrauch Privat
attr klS0Zaehler group Energieverbrauch
attr klS0Zaehler model DS2423
attr klS0Zaehler offset 0.0
attr klS0Zaehler room Energie
attr klS0Zaehler stateFormat { sprintf("%.2f kWh %.1f W", ReadingsVal("klS0Zaehler","energy","--.---"), ReadingsVal("klS0Zaehler","power","--.---"));; }
attr klS0Zaehler userReadings energy { ReadingsVal("klS0Zaehler","counters.A",0)/1000.0 + AttrVal("klS0Zaehler","offset",0);; }, power differential { 1875 * ReadingsVal("klS0Zaehler","counters.A",0) ;; }
attr klS0Zaehler event-on-change-reading energy,power
define FileLog_klS0Zaehler FileLog /media/usbstick/log/klS0Zaehler-%Y-%m.log klS0Zaehler:(energy|power).*
attr FileLog_klS0Zaehler logtype stromzaehler:Power,text
attr FileLog_klS0Zaehler room Dateien
define plStromKeller SVG FileLog_klS0Zaehler:stromzaehler:CURRENT
attr plStromKeller label "Privater Stromverbrauch in Bereich Werkstatt, Bad, Waschmaschine und Hobbyraum Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr plStromKeller room Energie
Zitat
2014-01-06_21:00:40 klS0Zaehler energy: 49.376
2014-01-06_21:00:40 klS0Zaehler power: 31.2842536754569
2014-01-06_21:01:40 klS0Zaehler power: 0 <<<<<< Der hier stört !!
Die abgenommene Leistung hat sich nicht geändert. Leider stimmt auch der Wert nicht, da es sich um ca. 12 Watt LED Gartenbeleuchtung handelt.
Der Stromzähler gibt 1000 Impulse/kWh aus.
Gruss R.
Edit: Gestern abend noch ein Update gefahren.
Hi,
laß doch bitte mal das Leerzeichen zwischem dem Komma und dem Wort power fort. Halte FHEM an und lösche beide setstate-Befehle zu dem Reading power aus der fhem.save.
Viele Grüße
Boris
Hallo Boris,
ich habe das Leerzeichen zwischen dem Komma und Power ", power differential" entfernt.
Fhem.save zweimal gelöscht und neu gestartet.
Zitat
2014-01-06_22:18:12 klS0Zaehler energy: 49.396
2014-01-06_22:18:12 klS0Zaehler power: 31.2500495464395
2014-01-06_22:19:12 klS0Zaehler power: 0
2014-01-06_22:22:12 klS0Zaehler energy: 49.397
2014-01-06_22:22:12 klS0Zaehler power: 31.2721527335642
2014-01-06_22:23:12 klS0Zaehler power: 0
Power 0 Eintrag immer noch vorhanden.
Edit: Meine Vermutung
Scheinbar arbeitet der "attr klS0Zaehler event-on-change-reading energy,power" nicht korrekt.
So wird vermutlich nach der ersten Änderung der nächste Event trotz allem, nach dem nächsten Einlesen
ausgeworfen. Da dieser Event nach "1" Minute rausgeworfen wird, obwohl keine Werteänderung vor lag.
Daher der Wert "0". Der Zählerstand ist gleich geblieben. Nach diesem Wert scheint der Event-on-Change zu arbeiten, da bei geringer Leistungsabnahme keine weiteren direkt nach einer Minute erzeugt werden.
Zitat
2014-01-06_22:29:12 klS0Zaehler energy: 49.399
2014-01-06_22:29:12 klS0Zaehler power: 31.2830688441045
2014-01-06_22:30:12 klS0Zaehler power: 0
2014-01-06_22:33:12 klS0Zaehler energy: 49.4
2014-01-06_22:33:12 klS0Zaehler power: 31.2509948083536
2014-01-06_22:34:12 klS0Zaehler power: 0
2014-01-06_22:37:12 klS0Zaehler energy: 49.401
2014-01-06_22:37:12 klS0Zaehler power: 31.2498108805737
2014-01-06_22:38:12 klS0Zaehler power: 0
2014-01-06_22:40:12 klS0Zaehler energy: 49.402
2014-01-06_22:40:12 klS0Zaehler power: 31.6159119529785
2014-01-06_22:41:13 klS0Zaehler power: 0
2014-01-06_22:53:19 klS0Zaehler energy: 49.404
2014-01-06_22:53:19 klS0Zaehler power: 31.2508625526877
2014-01-06_22:54:19 klS0Zaehler power: 0
Gruss R.
Erstaunlich.
Ich sehe nur drei wesentliche Unterschiede zu meiner Definition:
1. Der Faktor in dem Power-Reading muß 3.6 oder 3600 lauten statt 1875.
2. Ich habe kein event-on-change-reading.
3. Ich habe kein model-Attribut (das wird automatisch gesetzt).
So sieht das bei mir aus:
define 0.hr.e OWDevice 1D.995E04000000 60
attr 0.hr.e alias Gesamtverbrauch
attr 0.hr.e stateFormat { sprintf("%.3f kWh %.3f kW", ReadingsVal("0.hr.e","energy","?"), ReadingsVal("0.hr.e","power","?"));; }
attr 0.hr.e room Anlagen/Energie
attr 0.hr.e group Energie
#attr global userattr offset
{ addToAttrList("offset") }
attr 0.hr.e offset 48526.15
attr 0.hr.e userReadings energy { ReadingsVal("0.hr.e","counters.A",0)/1000.0+AttrVal("0.hr.e","offset",0);; }, power differential { 3.6*ReadingsVal("0.hr.e","counters.A",0);; }
define 0.hr.e.power.log FileLog /opt/fhem/log/0.hr.e.power-%Y%m.log 0.hr.e:power.*
attr 0.hr.e.power.log room Control/Energie
Viele Grüße
Boris
Hallo Boris,
irgendwie stehe ich mir wohl selber gerade im Weg.
Generell habe ich eine Anzeige in Watt und nicht in kWatt. Daher müsste dann mein Faktor
3600 sein.
Wenn ich aber "event-on-change-reading" nicht setzte, habe ich eine festes Raster für die aktuelle Leistungsabfrage,
hier 1 Minute.
Wenn ich eine Leistung von 60 Watt abhole, dürft das wohl stimmen, was ist aber, wenn ich nur 3 Watt abhole.
Hier würde der Impuls ja erst nach eine Zeit X kommen, da der S0 Zähler ja hier die Leistung aufsummiert.
Ohne den "event-on-change-reading" würde ich also eine ganze Zeit nichts verbrauchen und plötzlich 60Watt.
Gruss R.
P.S.: Vielleicht ist mein Fehler, das ich versuche die aktuelle Leistung darzustellen.
Hallo,
der Bus wird im regelmäßigen Abstand abgefragt, um den Stand des 1wire-Zählers der S0-Impulse zu ermitteln. Der differential-Modifier sorgt dafür, daß die Differenz der Zählerstände dividiert durch die zwischen den beiden Messungen vergangene Zeit in das power-Reading geschrieben wird. Dadurch wird de facto die Durchschnittsleistung zwischen den beiden Messungen ermittelt und dem Zeitpunkt der letzten Messung zugewiesen.
Die aktuelle Leistung erhältst Du im Grenzwert Meßintervall gegen 0. Aber das ist nur theoretisch erreichbar. Ich messe alle 60 Sekunden und erhalte dann eine schöne Zappelkurve über den Tag.
3 W x 1/60 h = 0,05 Wh; bei 1.000 Impulsen pro kWh bekommst Du überhaupt nur alle 20 Minuten einen Impuls. Bei so niedrigen Leistungen solltest Du also das Meßintervall zu einer halben Stunde wählen.
Mein Haus verbraucht im Ruhezustand 200 W. Das sind also innerhalb einer Minute 200 W x 1/60 h= 3,33 Wh oder 3 bis 4 Impulse.
Beim Kochen haben wir sagen wir 6 kW. Das sind also innerhalb einer Minute 6 kW x 1/60 h = 0,1 kWh oder 100 Impulse.
Das Attribut event-on-change-reading brauchst Du nicht dafür.
Grüße
Boris
Hallo Boris,
das ist eine gute Erklärung. Mein Hauptzähler hat 10000 Impulse, da habe ich das Problem nicht gesehen.
Gruss R.