Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Selbst geschriebene States lösen Subscriptions nicht aus

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    987

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Selbst geschriebene States lösen Subscriptions nicht aus

Geplant Angeheftet Gesperrt Verschoben JavaScript
2 Beiträge 1 Kommentatoren 121 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Björn JüttnerB Offline
    Björn JüttnerB Offline
    Björn Jüttner
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • Björn JüttnerB Offline
      Björn JüttnerB Offline
      Björn Jüttner
      schrieb am zuletzt editiert von
      #2

      Okay, Fehler nach langer Suche gefunden.

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

      1 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      580

      Online

      32.6k

      Benutzer

      82.3k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe