Hallo zusammen,
ich bekomme Abends um 23:55 immer eine Mail und eine Telegram Nachricht mit dem Strom -Tagesverbrauch von Homematic zugeschickt. Diese Werte trage ich dann in eine Excel Tabelle ein. Ja ich weiß das geht auch ohne Excel mit einer DB, aber das sprengt mom meinen Schädel
Ich möchte von HA um 23:55 auch die Auswertung vom Wärmepumpenzähler zugesendet bekommen. Mom lass ich mir andere Nachrichten per notification via mobile_app zusenden. Wie bekomme ich ein Scipt dazu nur um 23:55 diese Rechnung auszuführen und mir danach die Nachricht mit dem Diferenzwert zuzusenden. ?
Ich habe hier schon alles durchgelesen bezüglich Varibalem, aber ich komm nicht weiter.
Ich hab eine variables.yaml angelegt, in der ich hier aus dem Forum einfach die einträge übernommen habe
dann hab ich mir eine scripts.yaml angelegt mit
In der configuration.yaml hab ich dann auf die beiden *.yaml verwiesen bzw. die eine war schon drin
frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
variable: !include variables.yaml
Für mein Verständis hab ich eine Variable ’ au_ladestrom_gesetzt: ’ mit dem Wert 0 angelegt. Dann soll bei Aufruf des Scriptes diese Variable mit dem Wert von ’ sensor.sensor.tasmota_main_wpzaehlerstand ’ gefüllt werden.
Doch wenn ich die Konfiguration prüfen lasse bekome ich diese Fehlermeldung : Unexpected error calling config validator: ‘NoneType’ object is not iterable.
Mein Hintergedanke : Ich lass meine Wärmepumpenstand um 23:55 auslesen und in die Variable schreiben. Am folgenden Tag soll der Wärmepumpenstand wieder ausgelesen werde, und von dem Vortag abgezogen werden. Den Diffezenzwert möchte ich per Mail/Telegramm oder notification zugesand bekommen. Der Wert der Variable soll dann wieder um 23:55 ermittelt und in die Variable geschrieben werden usw. Eigenlich ganz einfach, aber ich bekomm das einfach nicht hin. In Homematic hab ich das so gemacht.
!Tageszaehler
var vTz = dom.GetObject("Strom Referenz Verbrauch heute");
var vTg = dom.GetObject("Strom Verbrauch heute");
vTz.State(vTg.State() + vTz.State());
vTg.State(0.00);
!Wochenzaehler
if (system.Date("%u") == 7) {
var vWz = dom.GetObject("Strom Referenz Verbrauch laufende Woche");
var vWg = dom.GetObject("Strom Verbrauch laufende Woche");
vWz.State(vWg.State() + vWz.State());
vWg.State(0.00);
}
!Monatszaehler
time morgen = (system.Date("%F %X").ToTime().ToInteger() + 120).ToTime();
if (morgen.Day() == 1) {
var vMz = dom.GetObject("Strom Referenz Verbrauch laufender Monat");
var vMg = dom.GetObject("Strom Verbrauch laufender Monat");
vMz.State(vMg.State() + vMz.State());
vMg.State(0.00);
}
!Jahreszaehler:
if ((system.Date("%m") == 12) && (system.Date("%d") == 31)) {
var vJz = dom.GetObject("Strom Referenz Verbrauch laufendes Kalenderjahr");
var vJg = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr");
vJz.State(vJg.State() + vJz.State());
vJg.State(0.00);
}
!----
string message ="Kalender Reset ausgefuehrt ";
string chatid = "YYYYYYYY"; ! chat_id des Empfängers;
string botAPI = "YYYYYYYY"; ! API des eingerichteten Bots;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message#"' -d chat_id="#chatid);
und
object oP = dom.GetObject("BidCos-RF.QEQ0336852:1.IEC_POWER");
object oE = dom.GetObject("BidCos-RF.QEQ0336852:1.IEC_ENERGY_COUNTER");
! Einspeisung in kWh
var SES = dom.GetObject("BidCos-RF.QEQ0336852:2.IEC_ENERGY_COUNTER").Value();
var SESo = SES-5;
dom.GetObject ("Strom Einspeisung").State(SESo);
!
var zA = dom.GetObject("Strom Zaehlerstand");
var aA = dom.GetObject("Strom Leistungsaufnahme aktuell");
var vLz = dom.GetObject("Strom Referenz Verbrauch seit letzter Ablesung");
var vLg = dom.GetObject("Strom Verbrauch seit letzter Ablesung");
var vTz = dom.GetObject("Strom Referenz Verbrauch heute");
var vTg = dom.GetObject("Strom Verbrauch heute");
var vWz = dom.GetObject("Strom Referenz Verbrauch laufende Woche");
var vWg = dom.GetObject("Strom Verbrauch laufende Woche");
var vMz = dom.GetObject("Strom Referenz Verbrauch laufender Monat");
var vMg = dom.GetObject("Strom Verbrauch laufender Monat");
var vJz = dom.GetObject("Strom Referenz Verbrauch laufendes Kalenderjahr");
var vJg = dom.GetObject("Strom Verbrauch laufendes Kalenderjahr");
zA.State(oE.State().Round(1));
aA.State(oP.State());
vLg.State((zA.State() - vLz.State()).Round(0));
vTg.State((zA.State() - vTz.State()).Round(0));
vWg.State((zA.State() - vWz.State()).Round(0));
vMg.State((zA.State() - vMz.State()).Round(0));
vJg.State((zA.State() - vJz.State()).Round(0));