Autor Thema: Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM  (Gelesen 32660 mal)

Offline fl_Indigo

  • Jr. Member
  • **
  • Beiträge: 98
Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
« Antwort #90 am: 13 Juni 2019, 11:47:55 »
Die Fehler gingen über mehrere Stunden, so das sich das komplette System aufgehängt hat.
Wer kann mir hier weiterhelfen ?

Liebe Grüße
Jörg

hatt nach irgendeinem fhem update dieselben probleme wie du gerade. da war irgendwas mit readings die verschachtelt gesetzt wurden und das eigentlich nicht so vorgesehen ist
hab dann die config angepasst, weiß aber nimmer genau was.
ich häng hier einfach nochmal meine aktuelle config an, die läuft und ist mit manueller zählerstandsanpassung (absolut, d.h. einfach aktuell richtigen zählerstand eintragen)
achtung, ist direkt aus der cfg rauskopiert!

define ESPEasy_ESP8266_Server_S0_Watt ESPEasy 10.0.0.91 80 ESPBridge ESP8266_Server_S0_Watt
attr ESPEasy_ESP8266_Server_S0_Watt IODev ESPBridge
attr ESPEasy_ESP8266_Server_S0_Watt Interval 120
attr ESPEasy_ESP8266_Server_S0_Watt alias Serverrack S0
attr ESPEasy_ESP8266_Server_S0_Watt event-min-interval .*:300
attr ESPEasy_ESP8266_Server_S0_Watt event-on-change-reading .*
attr ESPEasy_ESP8266_Server_S0_Watt group ESPEasy Device
attr ESPEasy_ESP8266_Server_S0_Watt presenceCheck 1
attr ESPEasy_ESP8266_Server_S0_Watt readingSwitchText 1
attr ESPEasy_ESP8266_Server_S0_Watt room 15_ESPEasy
attr ESPEasy_ESP8266_Server_S0_Watt setState 3
attr ESPEasy_ESP8266_Server_S0_Watt stateFormat { sprintf("Zählerstand: %.2f kWh<br>Verbrauch heute/gestern/vorgestern: %.2f/%.2f/%.2f kWh<br>Stromverbrauch aktuell: %.2f W<br>Durchschnittsverbrauch Heute/Gestern/Vorgestern %.2f/%.2f/%.2f Wh<br>Gesamtverbrauch dieses Monat/letzter Monat: %.2f/%.2f kWh", (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeute",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchGestern",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchVorgestern",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchAktuell",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeuteDurchschnitt",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchGesternDurchschnitt",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchVorgesternDurchschnitt",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand_EnergyMonth",0)), (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand_EnergyMonthLast",0)) ) }
attr ESPEasy_ESP8266_Server_S0_Watt userReadings StromverbrauchAktuell:Time:.* { 3600/ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "Time", 0)*1000 },\
ZaehlerStand:Time:.* { ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeute", 0) + ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStandVortag", 0);; },\
StromverbrauchHeute:Time:.* { my $Strom_Gesamt = (ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeute", 0)*1000 + ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "Count", 0) + ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeuteOffset",0)*1000)/1000;; return $Strom_Gesamt;; },\
StromverbrauchHeuteDurchschnitt:Time:.* { my $timestamp_now = time_str2num(nowdate());; my $timestamp_midnight = time_str2num(ReadingsTimestamp("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchGestern","0"));; my $timestamp_diff = ($timestamp_now - $timestamp_midnight)/3600;; my $Stromverbrauch_Heute = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchHeute","0")*1000;; my $Stromverbrauch_Heute_durchschnitt = $Stromverbrauch_Heute/$timestamp_diff;; return $Stromverbrauch_Heute_durchschnitt;; },\
StromverbrauchGesternDurchschnitt:StromverbrauchGestern:.* { my $Stromverbrauch_Gestern = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchGestern","0")*1000;; my $Stromverbrauch_Gestern_durchschnitt = $Stromverbrauch_Gestern/24;; return $Stromverbrauch_Gestern_durchschnitt;;},\
StromverbrauchVorgesternDurchschnitt:StromverbrauchVorgestern:.* { my $Stromverbrauch_Vorgestern = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchVorgestern","0")*1000;; my $Stromverbrauch_Vorgestern_durchschnitt = $Stromverbrauch_Vorgestern/24;; return $Stromverbrauch_Vorgestern_durchschnitt;;},\
ElectricityForecastToday_kWh:Time:.* { ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "StromverbrauchHeuteDurchschnitt", 0)*24/1000;;},\
ElectricityConsumedThisMonthAvgDay_kWh:ZaehlerStand_EnergyMonth:.* { my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);; my $Monatsverbrauch = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand_EnergyMonth", 0);; my $Monatsverbrauchdurchschnitt = $Monatsverbrauch/$mday;; return $Monatsverbrauchdurchschnitt;;},\
StromverbrauchHeuteOffset:StromverbrauchHeute.* {return 0;;}
attr ESPEasy_ESP8266_Server_S0_Watt verbose 0

define at_ESPEasy_ESP8266_Server_S0_Watt_reboot at *00:00:00 {\
my $Zaehler_Stand = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","ZaehlerStand","0");;\
my $Zaehler_Stand_Vortag = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","ZaehlerStandVortag","0");;\
my $Stromverbrauch_Heute = $Zaehler_Stand - $Zaehler_Stand_Vortag;;\
my $Stromverbrauch_Gestern = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt","StromverbrauchGestern","0");;\
my $zaehlerNeu = $Zaehler_Stand_Vortag + $Stromverbrauch_Heute;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt ZaehlerStandVortag $zaehlerNeu");;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchGestern $Stromverbrauch_Heute");;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchVorgestern $Stromverbrauch_Gestern");;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchHeute 0");;\
fhem ("set ESPEasy_ESP8266_Server_S0_Watt reboot");; }

define ESPEasy_ESP8266_Server_S0_Watt_Offset dummy
attr ESPEasy_ESP8266_Server_S0_Watt_Offset alias Serverrack
attr ESPEasy_ESP8266_Server_S0_Watt_Offset group Zählerstand Korrektur
attr ESPEasy_ESP8266_Server_S0_Watt_Offset readingList state
attr ESPEasy_ESP8266_Server_S0_Watt_Offset room 15_ESPEasy
attr ESPEasy_ESP8266_Server_S0_Watt_Offset setList state:textField
attr ESPEasy_ESP8266_Server_S0_Watt_Offset stateFormat Zählerstand Server wirklich state
attr ESPEasy_ESP8266_Server_S0_Watt_Offset webCmd state

define n_ESPEasy_ESP8266_Server_S0_Watt_Offset notify ESPEasy_ESP8266_Server_S0_Watt_Offset:.* { \
my $zaehlerstandaktuell = ReadingsVal("ESPEasy_ESP8266_Server_S0_Watt", "ZaehlerStand", 0);;\
my $offset=$EVENT-$zaehlerstandaktuell;;\
fhem ("setreading ESPEasy_ESP8266_Server_S0_Watt StromverbrauchHeuteOffset $offset") }

define FileLog_StromzaehlerServer FileLog ./log/StromzaehlerServer-%Y-%m.log ESPEasy_ESP8266_Server_S0_Watt:StromverbrauchAktuell:.*|ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStand:.*|ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStandVortag:.*|ESPEasy_ESP8266_Server_S0_Watt:StromverbrauchHeute:.*|ESPEasy_ESP8266_Server_S0_Watt:StromverbrauchVortag:.*

define ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityCalculator ESPEasy_ESP8266_Server_S0_Watt:ZaehlerStand:.*
attr ESPEasy_ESP8266_Server_S0_Watt_EC BasicPricePerAnnum 0
attr ESPEasy_ESP8266_Server_S0_Watt_EC Currency &#8364;;
attr ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityCounterOffset 0
attr ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityKwhPerCounts 1
attr ESPEasy_ESP8266_Server_S0_Watt_EC ElectricityPricePerKWh 0.19
attr ESPEasy_ESP8266_Server_S0_Watt_EC MonthOfAnnualReading 12
attr ESPEasy_ESP8266_Server_S0_Watt_EC MonthlyPayment 0
attr ESPEasy_ESP8266_Server_S0_Watt_EC ReadingDestination CounterDevice
attr ESPEasy_ESP8266_Server_S0_Watt_EC SiPrefixPower W
attr ESPEasy_ESP8266_Server_S0_Watt_EC event-on-change-reading .*
attr ESPEasy_ESP8266_Server_S0_Watt_EC room 15_ESPEasy

Offline joewanne

  • New Member
  • *
  • Beiträge: 21
Antw:Stromzähler S0 → ESP8266 mit ESPEasy → MQTT → FHEM
« Antwort #91 am: 13 Juni 2019, 14:49:56 »
Hallo fl_Indigo,

erst mal Danke für die Hilfe.
Ich habe das mit deinem Code getestet, doch leider
habe ich da den gleichen Fehler.
.....

Nach längerem Testen, viel mir auf, das der Fehler immer dann ist wenn der at Befehl läuft.
Habe dann alles ausprobiert.
Ich habe dann letztendlich den reboot von dem ESP ausgenommen.
Jetzt scheint es  zufunktionieren.


Liebe Grüße
Jörg