NEWS
(gelöst) Trigger auf Gewerk funktioniert nicht
-
Hallo
Ich habe nun Stunden damit Verbracht mein Problem zu lösen, leider schaffe ich es nicht.
Ich hab mir ein "Gewerk" unter enum.functions angelegt namens "licht_status". Diesem habe ich einige Switch Stats hinzugefügt.
Jetzt möchte ich gerne in einen Script mit einen Trigger auf dieses Gewerk reagieren falls sich der State ändert. Ich habe alles mögliche probiert entweder es kommen Fehler oder gar nichts.Mein Letzter Versuch war nach einen Forumsbeitrag aus 2016, leider passiert hier nichts, kein Fehler kein Log eintrag nichts.
$('channel(functions=licht_status)').on(function (obj) { setState("0_userdata.0.Testraum.javaTestausgabe", "geht", true); log("Ist gelaufen"); });
Ich habe auch folgendes Probiert, da hierzu in der Offiziellen Doku was Stand, hier bekomme ich jedoch einen Fehler im Log
on({enumName: "Licht_Status", change: "ne"}, function (obj) { setState("0_userdata.0.Testraum.javaTestausgabe", "geht", true); });
Fehler: Caught by controller[9: enumNames is of type object but should be an array: {}]
Kann mir bitte irgendjemand sagen was ich Falsch mache, ich verzweifle leider daran.
Danke für eure Hilfe.
-
@fireboyff sagte in Trigger auf Gewerk funktioniert nicht:
$('channel[functions=licht_status]').on(function (obj) { setState("0_userdata.0.Testraum.javaTestausgabe", "geht", true); log("Ist gelaufen"); });
Versuche das mal, bin aktuell nicht am coden, aber in meinen Skripten verwende ich [] und nicht (). Desweiteren suchst du nach channel oder nach state?
-
muss ich nacher probieren,
Was ich gerne hätte ist das mein Script getriggert wird wenn sich einer der Stats ändert der bei Functions "licht_status" hinterlegt hat.
Hier zb. Ein ShellyPlugS, wenn dieser den State von false auf True ändert möchte ich getriggert werden da Funktion "licht_status" gesetzt hat.Ich habs geschaft auf einen State bzw mehrere zu reagieren mit
var Rolllaeden = ["hm-rpc.0.WWWW.1.WORKING"/*Terrassentür links.WORKING*/, "hm-rpc.0.XXXX.1.WORKING"/*Terrassentür rechts.WORKING*/, "hm-rpc.0.YYYY.1.WORKING"/*Festverglasung links.WORKING*/, "hm-rpc.0.ZZZZ.1.WORKING"/*Festverglasung rechts.WORKING*/]; on(Rolllaeden, function(dp) {
Jedoch möchte ich nicht jede State ID einzeln per Hand angeben. Ich dachte mir mit Funktion wäre das die Lösung, dann müsste ich bei einer änderung nur den Wert Setzen bei Funktion und der State ist Automatisch dabei in der Überwachung oder wurde entfernt.
Evt. konnte ich jetzt mein ziel/wunsch besser darstellen.
-
@fireboyff
In dem Fall suchst du nach$('state[functions=licht_status]').on(function (obj) {
Ich hab das aber noch nicht ganz verinnerlicht. Ist eine Kopie aus meinen Skripten.
-
@ticaki said in Trigger auf Gewerk funktioniert nicht:
$('state[functions=licht_status]').on(function (obj) {
danke für deine Info. habs gleich getestet. Ein Skript wo nur das drinnen steht, das Skript sogar neu angelegt, keine reaktion
$('state[functions=licht_status]').on(function (obj) { setState("0_userdata.0.Testraum.javaTestausgabe", "geht", true); log("Ist gelaufen"); });
-
@fireboyff
Wenn "licht_status" die korrekte enum-ID ist, versuche mal:$('*(functions=licht_status)').on(function (obj) {
-
Danke Paul!!! Das wars jetzt funktioniert es.
nur das ich auch verstehe was ich da jetzt machemit Stern nehme ich alles, und dann sag i erm nur die mit meiner function?
Wenn ich den stern ersetzen würde auf was würde er sich da beziehen?Danke lg Fire
-
@fireboyff sagte: Wenn ich den stern ersetzen würde auf was würde er sich da beziehen?
Der Stern steht für "alle Datenpunkt-IDs". Man kann es eingrenzen, z.B.
$('hm-rpc.*.1.WORKING(functions=licht_status)').on(function (obj) {
-