Skript - if Abfrage wird nicht abgearbeitet

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Skript - if Abfrage wird nicht abgearbeitet

Beitrag von matze-pe » 27.09.2021, 08:42

Hallo,

ich habe eine PV Anlage mit SMA Wechselrichter und Sunny Home-Manager, die Abfrage der Werte passt auch:
HM-Variabel_PV.jpg
Jetzt wollte ich meine Verbraucher (Waschmaschine und Trockner) darüber anschalten, wenn genug Überschuss / Netzeinspeisung vorhanden ist.

In meinem Skript werden die if-abfragen nicht abgearbeitet, habe mir zum testen mal eine Push Nachricht eingetragen, um so sehen wo er hängt und bleibt am "Test starting" hängen:

Code: Alles auswählen

var waschmaschine = dom.GetObject("BidCos-RF.KEQ0xxxxx:1.STATE").Value();
var waschmaschine_power = (datapoints.Get("BidCos-RF.KEQ0xxxxx:2.POWER")).Value();
var trockner = dom.GetObject("BidCos-RF.MEQ0xxxxx:1.STATE").Value();
var trockner_power = (datapoints.Get("BidCos-RF.MEQ0xxxxx:2.POWER")).Value();
var netzeinspeisen = dom.GetObject("SMA Netzeinspeisung").Value();
var netzbezug = dom.GetObject("SMA Netzbezug").Value();

dom.GetObject("pocketControlPushMessage").State("Test starting");

if (netzeinspeisen > waschmaschine_power)
{ 
 waschmaschine.State(true);
 dom.GetObject("pocketControlPushMessage").State("Waschmaschine eingeschaltet");
}
else
{
 waschmaschine.State(false);
 dom.GetObject("pocketControlPushMessage").State("Waschmaschine ausgeschaltet");
}


if (netzeinspeisen > trockner_power)
{ 
 trockner.State(true);
 dom.GetObject("pocketControlPushMessage").State("Trockner eingeschaltet");
}
else
{
 trockner.State(false);
 dom.GetObject("pocketControlPushMessage").State("Trockner ausgeschaltet");
}
Die Variabeln sind gefüllt (Ausgabe von gestern Abend 22 Uhr - keine Sonne)
ausgabe
{
"netzeinspeisen": "0.000000",
"trockner_power": "0.000000",
"trockner": "true",
"sessionId": "",
"netzbezug": "529.000000",
"waschmaschine_power": "0.050000",
"waschmaschine": "true",
"httpUserAgent": "",
"STDOUT": ""
}


Seht ihr warum mein Skript nicht funktioniert?


Viele Grüße
Matthias
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

Benutzeravatar
Black
Beiträge: 5471
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von Black » 27.09.2021, 08:49

Waschmaschine und trockner sind nicht vom Typ object. Drum knallt wohl das Waschmaschine. State (true)

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von matze-pe » 27.09.2021, 09:02

Hi,
entweder stehe ich gerade auf dem Schlauch, oder verstehe nicht was du meinst :)

Code: Alles auswählen

var waschmaschine = dom.GetObject("BidCos-RF.KEQ0xxxxx:1.STATE").Value();
var trockner = dom.GetObject("BidCos-RF.MEQ0xxxxx:1.STATE").Value();
Die beiden Geräte frage ich doch ab, mit "GetObject". Oder was meinst du, sie sind nicht vom Typ "Object"?
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

MichaelN
Beiträge: 9650
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von MichaelN » 27.09.2021, 09:24

Du hast Ihnen kein Objekt sondern einen Wert zugewiesen.

Darum kannst Du nicht mit. State darauf zugreifen. In der if Bedingung arbeitest Du doch auch ohne. State
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Baxxy
Beiträge: 10779
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2205 Mal

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von Baxxy » 27.09.2021, 10:34

matze-pe hat geschrieben:
27.09.2021, 09:02
stehe ich gerade auf dem Schlauch
ändere...

Code: Alles auswählen

var waschmaschine = dom.GetObject("BidCos-RF.KEQ0xxxxx:1.STATE").Value();
var trockner = dom.GetObject("BidCos-RF.MEQ0xxxxx:1.STATE").Value();
zu...

Code: Alles auswählen

object waschmaschine = dom.GetObject("BidCos-RF.KEQ0xxxxx:1.STATE");
object trockner = dom.GetObject("BidCos-RF.MEQ0xxxxx:1.STATE");
Dann sollte das grundsätzlich erstmal funktionieren.

Die Logik hinter Deinem Konstrukt würde ich aber nochmal überdenken :!:
Angenommen beide Aktoren sind AUS (Leistung = 0.0), da würde schon die kleinste Netzeinspeisung reichen um die Aktoren EINzuschalten.
Läuft dann die Waschmaschine und zieht beim Heizen 2000W sinkt entsprechend deine Netzeinspeisung und bei der nächsten Scriptausführung wird die Waschmaschine dann hart AUSgeschalten.

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von matze-pe » 27.09.2021, 13:39

super danke, der Teil funktioniert :)

Stimmt bzgl. der Logik hast du recht, schade das der SMA Home Manager nicht direkt mit dem Homematic Aktoren sprechen kann. Ich würde gerne wissen, wie SMA das direkt mit den Lesitungssteckdosen handhabt. Die haben ja eine eigene Steuerung für AVM / Edimax Steckdosen um die PV gesteuert zu schalten.

Oder in der Logik müsste ich eine Warteschleife einbauen, der bei 2x überschreiten erst ausschaltet (alle 5 MIn)?


Gruß
Matthias
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

Benutzeravatar
Baxxy
Beiträge: 10779
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2205 Mal

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von Baxxy » 27.09.2021, 16:25

matze-pe hat geschrieben:
27.09.2021, 13:39
Logik
Wie du die Logik aufbaust kannst du ja nur selbst entscheiden.
Idealerweise legt man sich erstmal ein Konzept zurecht unter welchen Bedingungen was, wann, wie... laufen soll.

Die "Freigabe" für Waschmaschine und Trockner bei genug Netzeinspeisung finde ich noch einigermaßen ok, aber hart ausschalten bei "jeder dicken Wolke" wäre nicht so meins.

Das was du als Script vorgelegt hast kann man auch ganz einfach mit WebUI-Programmen lösen.
Erst wenn mathematische Berechnungen nötig sind müsste man zum Script greifen.

Grüße, Baxxy

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von matze-pe » 27.09.2021, 17:50

Ich kann im WebUI in der Anfrage keine zwei Werte vergleichen?
Also Einspeisung größer als Verbraucher.

Da könnte ich nur statische Werte eingeben.

Oder hast du für die webui Trick, dann kann ich mir das geskripte sparen :)
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

Benutzeravatar
Black
Beiträge: 5471
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von Black » 27.09.2021, 19:16

Mach es lieber per Script die Abfrage auf variable werte.

Es geht in der webui durch direktes tweeken der entsprechen Objekte innerhalb eines Programmes zwar auch, ist aber unsuportet und eher was für die Hardcore Anwender/ Tester

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
Baxxy
Beiträge: 10779
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2205 Mal

Re: Skript - if Abfrage wird nicht abgearbeitet

Beitrag von Baxxy » 27.09.2021, 23:55

matze-pe hat geschrieben:
27.09.2021, 17:50
Also Einspeisung größer als Verbraucher.
Ok, 2 Werte vergleichen kann die WebUI leider nicht. Brauchst du ja zumindest beim EINschalten auch nicht denn die Verbraucher haben im AUS-Zustand ja 0.0 Watt. Da würde was simples wie...

Code: Alles auswählen

WENN Einspeisung > 2000W
UND 
Waschmaschine AUS
dann
Waschmaschine EIN
...eigentlich reichen.

Für's AUSschalten (Vergleich Variable x>y) geht's nur mit Script.
Aber hast du mal getestet wie sich Wachmaschine und Trockner verhalten wenn sie mitten im Programm stromlos gemacht werden.
Meine Frau würde mir den Hals umdrehen wenn sie nach jeder dicken Wolke in den Keller müsste um die WM (neu) zu starten. :?

Grüße, Baxxy

Antworten

Zurück zu „HomeMatic allgemein“