NEWS
Einfache Temperatursteuerung geht nicht
-
@homoran 3 ist der Schaltkanal.
-
@ceulem dann noch mal auf zahlen ändern und debug Bausteine setzten um zu sehen wo es hängt
-
@ceulem sagte: eine HmIP Steckdose schalten
Bei HmIP auch an den Duty cycle denken, d.h. nur dann Senden, wenn sich der Zustand des Aktors ändern soll.
Wert findet man unter "Trigger".
-
@paul53 Stimmt, habe ich nicht dran gedacht. Wo ich allerdings noch ein wenig auf dem Schlauch stehe, im letzten Block deines Skriptes "vom Objekt ID" kommt wieder der Temperatur Sensor rein oder?
-
@ceulem sagte: "vom Objekt ID" kommt wieder der Temperatur Sensor rein oder?
Nein, der Aktor. Ich dachte, dass die Aussage "nur dann Senden, wenn sich der Zustand des Aktors ändern soll", dies erklärt.
-
@paul53 Das Skript funktioniert bei mir nicht und für zu einer Fehlermeldung
Mit den debug blöcken kenn ich mich garnicht aus.So sieht das Skript aktuell aus:
var Aktor, Wert; on({id: 'hm-rpc.1.000A9A49A4D2B9.1.ACTUAL_TEMPERATURE', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (Wert <= 25) { Aktor = false; } else if (Wert >= 25.5) { Aktor = true; } if (Aktor != getState("hm-rpc.1.0001D3C99C77A2.3.STATE").val) { setState("hm-rpc.1.0001D3C99C77A2.3.STATE"/*HMIP-PSM 0001D3C99C77A2:3.STATE*/, Aktor); } }); //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0N2YXJpYWJsZXMlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyWHI5VHdoViU2MCUzQWk2eV9sKGRZdm0lM0QlMjIlM0VBa3RvciUzQyUyRnZhcmlhYmxlJTNFJTNDdmFyaWFibGUlMjBpZCUzRCUyMkNqRlIlN0QoJTdESiUyNSU2MEclMjNOJTJCJTJCNElXQ0wlMjIlM0VXZXJ0JTNDJTJGdmFyaWFibGUlM0UlM0MlMkZ2YXJpYWJsZXMlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9leHQlMjIlMjBpZCUzRCUyMiElM0YoJTNCd0JiOEcweDg0JTVFZjZZJTVCTHglMjIlMjB4JTNEJTIyLTY4OCUyMiUyMHklM0QlMjItNTg3JTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwaXRlbXMlM0QlMjIxJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT05ESVRJT04lMjIlM0VuZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEMCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMmolMjNzQjF6Y08lM0QlM0RtN1VZYjAlNURmNEUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0VobS1ycGMuMS4wMDBBOUE0OUE0RDJCOS4xLkFDVFVBTF9URU1QRVJBVFVSRSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMiU0MGUlMkZpQ083a2o5JTdEJTNCSlklN0IlM0RTTDAuJTIyJTNFJTNDbXV0YXRpb24lMjBlbHNlaWYlM0QlMjIxJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJsb2dpY19jb21wYXJlJTIyJTIwaWQlM0QlMjIwNmglN0RCUGdTNmRkalJzJTJGcU0lMjU5ISUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTFRFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIySCklM0JnNWIlNUJ+JTJDJTNBfiU1RSUyNTRFJTQwQ3kuJTNBJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJDakZSJTdEKCU3REolMjUlNjBHJTIzTiUyQiUyQjRJV0NMJTIyJTNFV2VydCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTNEMC4lM0RrJTVESSUyM2ElM0ZQUSp0JTI1cTQlM0JWQyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTI1JTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjJmKTQueX45NUo1MEdpNXhlJTQwN3UlMkIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMlhyOVR3aFYlNjAlM0FpNnlfbChkWXZtJTNEJTIyJTNFQWt0b3IlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyUTAhRFpMKjRPJTVFTzElM0FwLkhBMjElNUQlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMk9+WXd5QyU3QygweWoqdGpIJTJCS1d+aCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFR1RFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyZEVBJTNCUndJRSUyQlNWN0NhciUyQiUzRlJJJTVFJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJDakZSJTdEKCU3REolMjUlNjBHJTIzTiUyQiUyQjRJV0NMJTIyJTNFV2VydCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkIlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyaGhRM1BTfkFDLXMlNUQpTTViRSU0MGN3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMjUuNSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8xJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyVG5KMSl3KnJOJTJCNk4wJTIzJTdEWXNlZFAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMlhyOVR3aFYlNjAlM0FpNnlfbChkWXZtJTNEJTIyJTNFQWt0b3IlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyJTJGc2tlJTNBWkkhcGMlMkI0KE5lJTQwJTI0dVNqJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIybiUzRCU3RCpINVdTeX5WSFNmJTNEJTNCLkNFSiUyMiUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMklGMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmxvZ2ljX2NvbXBhcmUlMjIlMjBpZCUzRCUyMmgxSzIlNDBjJTQwbCUyM3M4T1hjJTYwKVBuJTNCRiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9QJTIyJTNFTkVRJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyaSU1RCUzQmx+MDkqR2ooUE9LKDNYV0RSJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjJYcjlUd2hWJTYwJTNBaTZ5X2woZFl2bSUzRCUyMiUzRUFrdG9yJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyQiUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyOVRKJTdDNV9lKG10aDklM0FqJTIzJTJDeG5LeiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk9JRCUyMiUzRWhtLXJwYy4xLjAwMDFEM0M5OUM3N0EyLjMuU1RBVEUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPMCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMnR2KWxFWVp0JTVCbCUyRig2JTdESXBSaSUyNC0lMjIlM0UlM0NtdXRhdGlvbiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYxOTk5JTJGeGh0bWwlMjIlMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VobS1ycGMuMS4wMDAxRDNDOTlDNzdBMi4zLlNUQVRFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX0RFTEFZJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyYmslMjVlVDA0amZZcERTM00lN0IlMkMuWCU1QiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyWHI5VHdoViU2MCUzQWk2eV9sKGRZdm0lM0QlMjIlM0VBa3RvciUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
-
Das Skript funktioniert schon. Allerdings hat das Skript eine Lücke:
Die Variable Aktor ist nicht definiert wenn die Temperatur zwischen 25 und 25.5 Grad liegt.
Genau darüber beschwert sich das Skript. Ich würde als ersten Block im Skript die Variable Aktor mit dem Wert von 'hm-rpc.1.0001D3C99C77A2.3.STATE' vorgelegen.
Dann sollte es gehen.
A.
-
@ceulem Ich kenne nur javascript ein wenig...
In Zeile 1 erstellst du die Variable Wert, ohne einen Inhalt zuzuweisen.In Zeile 7 prüfst du, ob Wert <= 25 ist. Aber was genau steht in Wert?
Ersetzte in Zeile 5 das value durch Wert, dann sollte es passen, zumindest was die Prüfung angeht.
Warum muss die zweite Prüfung eine else if sein?
Reicht nicht an else bei einem Wert >25?Der Fehler besagt aber, dass Aktor beim setState in Zeile 13 das falsche Format hat.
Zeile 2 z.B.var Aktor = new Boolean(false);
Und Aktor aus Zeile 1 löschen.
-
@ceulem sagte: So sieht das Skript aktuell aus:
Wert darf keine selbst erstellte Variable sein, sondern unter "Trigger":
Initialisiere die Variable Aktor außerhalb des Trigger-Blockes auf den Wert des Aktors.
-
@paul53 Danke, so scheint es jetzt zu funktionieren. Es gibt zwar eine Verzögerung, aber damit kann ich leben.