NEWS
Selbst geschriebene States lösen Subscriptions nicht aus
-
Hallo Zusammen,
ich habe ein kleines Problem mit meinem Skript, das ich zur Steuerung meiner Heizkörper verwende.
Es stammt von Looxer01: https://forum.iobroker.net/topic/5706/vorlage-heizungsthermostatsteuerung-scriptEs müsste sich um folgenden Codeblock handeln:
... // Fuellen der Nicht-Homematic Sensoren in die SensorTab // Map-Dokumentation: // Sensortypetab = 0.RPC-Pfad 1.GeraeteType 2. Beschreibung, 3.Type 4.DP Status 5.Laenge ID 6. Verschlussstatus 7. direktverknuepft // NonHM-SensorTab 0= Raum 1 = Datenpunkt vis vor Geraet 0.RPC-Pfad 2. Datenpunkt Geraet 3. Datenpunkt FensterstatusGeraeteType 4.Verschlussstatus bei geschlossen 5. TempAbsenkung automatisch, // // Sensorlist SensorList[y] = [roomNoSpace, id, devtype, fullname, idExtract, SensorTypeTab[x][3],SensorTypeTab[x][4],SensorTypeTab[x][5],SensorTypeTab[x][6],SensorTypeTab[x][7] ]; // Füllen der sensorlist raum=0 komplette id=1 NoneHM=2 Name aus getobject(id)=3 NoneHMSensorTab(1)=4 "NoneHM"=5 NoneHMSensorTab(2)=6 laenge ID=7 verschlussstatus=8 direktverknüpft=9 , y = SensorList.length; // letzter Eintrag der Sensorlist for (x in NoneHMSensorTab) { roomName = NoneHMSensorTab[x][0]; if(roomName !== "initial" && RoomListUsage(roomName)) { // wenn die Raumliste genutzt wird ist und der Raum in der Liste enthalten ist. y++; roomNoSpace = roomName.replace(/\s/g, "_"); id = NoneHMSensorTab[x][1] + '.' + NoneHMSensorTab[x][2] + '.' + NoneHMSensorTab[x][3]; var NoneHMSensorObj = getObject(id); if (NoneHMSensorObj && NoneHMSensorObj.common && NoneHMSensorObj.common.name) { fullname = NoneHMSensorObj.common.name; } else { fullname = "n/a"; } devtype = "NoneHM"; if (debug ) {log("Routine getdevice fuer NoneHMSensorTab " + roomName,"info");} //Füllen: raum=0 komplette id=1 NoneHM=2 Name aus getobject(id)=3 Datenpunkt bis vor Geraet=4 "NoneHM"=5 Beschreibung=6 frei=7 verschlussstatuss, direktverknuepft=9 SensorList[y] = [roomNoSpace, id, devtype, fullname, NoneHMSensorTab[x][1], NoneHMSensorTab[x][3], fullname, false, getState(id).val, NoneHMSensorTab[x][5] ]; log("Routine GetDevices NoneHM Sensoren: " + roomNoSpace + " - " + SensorList[y], "info"); on({id: SensorList[y][1], change: 'ne'}, function(obj) { //if (obj.state.val !== obj.oldState.val) { // nur bei Aenderungen SensorChange(obj.id); //} // End - react on change }); // ende on id } // endif roomName war nicht initial } // endfor Nicht Homematic Geraete ...Leider sind meine Sensoren etwas eigenwillig und schalten beim Öffnen einen Bool und beim Schließen einen anderen Bool um, aber beide nicht selbstständig zurück daher musste ich etwas schummeln und habe ein Hilfsskript geschrieben, dass die States sinnvoll umsetzt.
//Tür- und Fenstersensoren //Haustür on({id: "rflink.0.channels.EV1527_1.SWITCH_03", val: true}, function (obj) { setState("0_userdata.0.Doors.Front", true, true); setState("rflink.0.channels.EV1527_1.SWITCH_03", false); }); on({id: "rflink.0.channels.EV1527_1.SWITCH_09", val: true}, function (obj) { setState("0_userdata.0.Doors.Front", false, true); setState("rflink.0.channels.EV1527_1.SWITCH_09", false); }); //Balkon on({id: "rflink.0.channels.EV1527_2.SWITCH_03", val: true}, function (obj) { setState("0_userdata.0.Doors.Balcony", true, true); setState("rflink.0.channels.EV1527_2.SWITCH_03", false); }); on({id: "rflink.0.channels.EV1527_2.SWITCH_09", val: true}, function (obj) { setState("0_userdata.0.Doors.Balcony", false, true); setState("rflink.0.channels.EV1527_2.SWITCH_09", false); }); //Arbeitszimmer on({id: "rflink.0.channels.EV1527_3.SWITCH_03", val: true}, function (obj) { setState("0_userdata.0.Doors.Workspace", true, true); setState("rflink.0.channels.EV1527_3.SWITCH_03", false); }); on({id: "rflink.0.channels.EV1527_3.SWITCH_09", val: true}, function (obj) { setState("0_userdata.0.Doors.Workspace", false, true); setState("rflink.0.channels.EV1527_3.SWITCH_09", false); }); //Küche on({id: "rflink.0.channels.EV1527_4.SWITCH_03", val: true}, function (obj) { setState("0_userdata.0.Doors.Kitchen", true, true); setState("rflink.0.channels.EV1527_4.SWITCH_03", false); }); on({id: "rflink.0.channels.EV1527_4.SWITCH_09", val: true}, function (obj) { setState("0_userdata.0.Doors.Kitchen", false, true); setState("rflink.0.channels.EV1527_4.SWITCH_09", false); }); //Schlafzimmer 1 on({id: "rflink.0.channels.EV1527_5.SWITCH_03", val: true}, function (obj) { setState("0_userdata.0.Doors.Bedroom1", true, true); setState("rflink.0.channels.EV1527_5.SWITCH_03", false); }); on({id: "rflink.0.channels.EV1527_5.SWITCH_09", val: true}, function (obj) { setState("0_userdata.0.Doors.Bedroom1", false, true); setState("rflink.0.channels.EV1527_5.SWITCH_09", false); }); //Schlafzimmer 2 on({id: "rflink.0.channels.EV1527_6.SWITCH_03", val: true}, function (obj) { setState("0_userdata.0.Doors.Bedroom2", true, true); setState("rflink.0.channels.EV1527_6.SWITCH_03", false); }); on({id: "rflink.0.channels.EV1527_6.SWITCH_09", val: true}, function (obj) { setState("0_userdata.0.Doors.Bedroom2", false, true); setState("rflink.0.channels.EV1527_6.SWITCH_09", false); });Bei Neustart des Heizungsskript wird der Status korrekt ausgelesen, aber während die subscription aktiv ist, reagiert der Code nicht.
Kann mir einer sagen warum die Subscription nicht auslöst und wie ich es dazu bringe doch auszulösen?
-
Okay, Fehler nach langer Suche gefunden.
Bei nicht aktiver Heizperiode werden die Trigger nicht verarbeitet...
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden