Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Selbst geschriebene States lösen Subscriptions nicht aus

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Selbst geschriebene States lösen Subscriptions nicht aus

    This topic has been deleted. Only users with topic management privileges can see it.
    • Björn Jüttner
      Björn Jüttner last edited by

      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-script

      Es 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?

      1 Reply Last reply Reply Quote 0
      • Björn Jüttner
        Björn Jüttner last edited by

        Okay, Fehler nach langer Suche gefunden.

        Bei nicht aktiver Heizperiode werden die Trigger nicht verarbeitet...

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        477
        Online

        31.9k
        Users

        80.1k
        Topics

        1.3m
        Posts

        1
        2
        106
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo