Eine Liste mit Stromkosten oder ähnliches automatisch erstellen

Begonnen von Gear, 25 März 2020, 10:43:26

Vorheriges Thema - Nächstes Thema

Gear

Guten Morgen zusammen!
Ich hoffe, euch geht es gut und bleibt gesund!!

Folgendes Vorhaben stellt mich gerade vor ein kleines Problem:
Drei 3D-Drucker habe ich aktuell hier stehen, diese werden von Repetier-Server befeuert und der Strom je über ein SONOFF POW R2 gemessen auf welchem sich Tasmota befindet.
FHEM liest via API die Daten aus und nun möchte ich gerne den Verbrauch, bzw die Kosten für einen Druck ermitteln.

HTTPMOD liest die JSON aus und eine Funktion gibt mir folgende Readings in ein Dummy:
> Start und berechneter Endzeitpunkt
> File Name
> Fortschritt in %

Wie kann ich das am besten tracken und ggf in eine txt-File schreiben, bzw ein Dummy?!


Ich danke euch!
Einen angenehmen Tag
Beste Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

flummy1978

Holla,

falls Du damit was "genaueres" vor hast, muss ich Dich enttäuschen. Die Sonoff Teile sind alles andere als genau, je kleiner der Verbrauch ist umso schlimmer wird es - Wenn es lediglich um Vergleichswerte geht, hast Du eine ungefähre Richtung aber wirklich Aussage über Verbrauch XY kannst Du dabei nicht treffen. Wenn sie nicht kalibriert wurden, erst Recht nicht.

Zu Deinem Problem:
Wenn Du bereits eine Rückmeldung hast, die den Start mitteilt kannst Du die Werte ja relativ einfach in einem Log mitschreiben und bei der Ausgabe dann während der Laufzeit den Verbrauch anzeigen lassen.

Ich weiss nicht auf welchem (Wissens)Stand Du gerade bist, aber ich hab meine POW Messungen alle in FHEM direkt integriert (MQTT2Device) und lese sie dort aus:

event-on-change-reading  ENERGY_Current:0.01,ENERGY_Today:0.5,ENERGY_Total:0.5,ENERGY_Yesterday,ENERGY_Power:5,POWER1,Wifi_RSSI:5,running,state

führt dazu dass die Werte on Change ein Event auslösen und geloggt werden (können). In meinem Fall in eine Datenbank geschrieben werden. Bei Dir könnten sie dann halt im Filelog landen:

defmod testlog FileLog ./log/test_LOG-%Y-%m.log DEVICENAME:ENERGY_Current:.*|DEVICENAME:ENERGY_Total|EVICENAME:ENERGY_Power:.*|usw|fakelog

Aber das ist jetzt einfach nur ins Blaue geraten .. ein paar mehr Infos braucht man dazu schon ;) Vielleicht hilft das ja schon als Ansatz

Viele Grüße
Andreas


Gear

Die POWs sind kalibriert mit einem Trenntrafo, welcher eine stabile Wechselspannung ausgibt, bei einem Strom der vergleichbar mit dem Strom des jeweiligen Druckers ist.
Die Messungenauigkeit ist mir klar, jedoch ist es vergleichbar mit jedem normalen Zwischenstecker mit Display, welchen es überall gibt, somit ist die Messungenauigkeit eher zu vernachlässigen. :)
Da die POWs nach einem Neustart nicht immer die vorherigen Werte drin stehen haben oder nach einem FHEM Restart der Wert mal ins Stolpern kommen kann, habe ich das so aufgebaut, dass der temporäre Zähler bei einem der Fälle einfach auf 0 gesetzt wird.
> Bedeutet, dass hier auch mal ein kleiner Verlust entsteht, welcher eben so vernachlässigbar ist. =)

Habe eine Funktion geschrieben, welche die Werte der Tasmota und ESP-Easy Stromzähler (S0) auswerten kann und durch den kWh Preis meines Stromanbieters berechnet.
Zudem wird hier auch eine Listung für Heute, Gestern, Monat, Vormonat, Jahr, Vorjahr und Gesamt gemacht in Bezug auf Verbrauch und kosten.

Meine Tasmota und ESP Geräte schicken via MQTT ihren JSON-String, dieser wird in einer weiteren Instanz auf dem gleichen PI empfangen und durch die Funktion ausgewertet, diese Werte werden dann via FHEM2FHEM auf die Hauptinstanz geleitet.
> Hatte leider bei einem 60s Intervall von 10 Geräten oft das Problem, dass die Hauptinstanz ins stocken gekommen ist, wenn jetzt noch ein Lichtschalter oder ähnliches sich gemeldet hat... xD

Du hast mich auf eine Idee gebracht, ich werde mal versuchen, dass ich es mit einem "event-on-change-reading" versuchen.
Werde bei einem Event von Druck-Namen (None > iwas.gcode // iwas.gcode > None) ein Reading im Drucker Dummy mit den Stromkosten setzen und am Ende dann die Werte subtrahieren und habe meine Kosten.

Danke, stand echt auf dem Schlauch!!

Werde mir das dann vermutlich bei Telegram mitschicken lassen, da ich eh beim Ende eines Drucks ne Nachricht bekomme.


Danke für die Hilfe, ich hoffe, dass sich das Problem dann gelöst hat!

Bleibt Gesund! =)

Mein Device für die Strommessung sieht so aus: (Hauptinstanz, Werte von FHEM2FHEM)
defmod 3DDrucker.Ender4.SmPow.JSONconv dummy
attr 3DDrucker.Ender4.SmPow.JSONconv DbLogExclude .*
attr 3DDrucker.Ender4.SmPow.JSONconv group Strommessung
attr 3DDrucker.Ender4.SmPow.JSONconv room 13 Strommessung,10 3D-Drucker
attr 3DDrucker.Ender4.SmPow.JSONconv stateFormat Aktuell: SmAktuell kWh<br><br>Heute: SmHeute kWh<br>Gestern: SmGestern kWh<br>Monat: SmMonat kWh<br>Vormonat: SmVorMonat kWh<br>Jahr: SmJahr kWh<br>Vorjahr: SmVorJahr kWh<br><br>Gesamt: SmGesamt kWh

setstate 3DDrucker.Ender4.SmPow.JSONconv Aktuell: 0.061 kWh<br><br>Heute: 0.0650 kWh<br>Gestern: 0.0000 kWh<br>Monat: 0.0740 kWh<br>Vormonat: 0.000 kWh<br>Jahr: 0.0740 kWh<br>Vorjahr: 0.000 kWh<br><br>Gesamt: 0.0740 kWh
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmAktuell 0.061
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 00:00:10 SmDatum 2020-03-25
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 09:36:49 SmFirstRun false
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmGesamt 0.0740
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmGesamtKosten 0.02029080
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 00:00:10 SmGestern 0.0000
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 00:00:10 SmGesternKosten 0.00000000
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmHeute 0.0650
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmHeuteKosten 0.01782300
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmJahr 0.0740
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmJahrKosten 0.02029080
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmLastENERGY_Total 114.818
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmMonat 0.0740
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 12:56:48 SmMonatKosten 0.02029080
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 09:36:49 SmNeuStartFHEM false
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-25 09:36:49 SmOnline false
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-07 22:48:55 SmStart 2020-03-07
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-07 22:48:55 SmVorJahr 0.000
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-07 22:48:55 SmVorJahrKosten 0.0000
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-07 22:48:55 SmVorMonat 0.000
setstate 3DDrucker.Ender4.SmPow.JSONconv 2020-03-07 22:48:55 SmVorMonatKosten 0.0000

> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <