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. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

[Vorlage] Heizungsthermostatsteuerung 2.1 - Script

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascripttemplateheatingclimate
1.1k Beiträge 115 Kommentatoren 397.5k Aufrufe 61 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.
  • Q Offline
    Q Offline
    quorle
    schrieb am zuletzt editiert von
    #350

    @jeti:

    anbei schon mal der Screenshot.

    Raum ist > Buero , dieses ist auch in den Aufzählungen und im Skript vorhanden!

    Was ist denn nun genau mein Datenpunkt SollTemp? manuel muss/kann ichHeat_1unter````
    zwave.0.NODE2.THERMOSTAT_SETPOINT

    
    Danke und Gruß `  
    

    Versuch es einmal so:

    NoneHMTab[1] = ['Buero',         'ZWAVE.0',                      'NODE2',        'THERMOSTAT_SETPOINT.HEAT_1',            12];
    
    1 Antwort Letzte Antwort
    0
    • J Offline
      J Offline
      jeti
      schrieb am zuletzt editiert von
      #351

      leider nein, hier der Ausschnitt aus dem Log:
      ` > javascript.0 2018-03-30 16:02:48.384 error at ContextifyScript.Script.runInContext (vm.js:59:29)

      javascript.0 2018-03-30 16:02:48.384 error at script.js.common.Heizung_2_0:338:1

      javascript.0 2018-03-30 16:02:48.383 error at initializeData (script.js.common.Heizung_2_0:345:5)

      javascript.0 2018-03-30 16:02:48.383 error at getDevices (script.js.common.Heizung_2_0:572:32)

      javascript.0 2018-03-30 16:02:48.382 error TypeError: roomName.replace is not a function

      javascript.0 2018-03-30 16:02:48.382 error ^

      javascript.0 2018-03-30 16:02:48.381 error roomNoSpace = roomName.replace(/\s/g, "_");

      javascript.0 2018-03-30 16:02:48.380 error script.js.common.Heizung_2_0: script.js.common.Heizung_2_0:572

      javascript.0 2018-03-30 16:02:48.252 info Start javascript script.js.common.Heizung_2_0

      javascript.0 2018-03-30 16:02:47.978 info Stop script script.js.common.Heizung_2_0 `

      edie RoomList ist deaktiviert:

      var UseRoomList = false;      // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
      
      
      1 Antwort Letzte Antwort
      0
      • L Offline
        L Offline
        looxer01
        schrieb am zuletzt editiert von
        #352

        Hi,

        @jeti:

        javascript.0 2018-03-30 16:02:48.382 error TypeError: roomName.replace is not a function

        javascript.0 2018-03-30 16:02:48.382 error ^ `

        Du hast typos in das script gebracht. Das kann leider relativ leicht passieren.

        Welche das sind kannst du einfach überprüfen.

        Folgenden Link nutzen:

        http://esprima.org/demo/validate.html

        Dann den Code reinkopieren. Der Syntax Checker sagt dir an welchen Stellen es Probleme gibt.

        vG Looxer

        1 Antwort Letzte Antwort
        0
        • L Offline
          L Offline
          looxer01
          schrieb am zuletzt editiert von
          #353

          @quorle:

          Ok, ich hab jetzt vieles versucht, um meine errechnete Solltemp irgendwie in das Script hier zu bringen, aber nichts hat geklappt. Leider auch das setzen auf die "manuelle" Solltemp. Denn dort wird alles nichtig, sobald die Zeit abgelaufen ist. Und bei einem erneuten setzten dieser manuellen Temp, reagiert es leider nicht mehr. Gerade bin ich ratlos, wie ich das hin bekomme…. `

          Hi,

          ich vermute folgendes.

          Beim ersten mal sitzt die Variable Source_Timestamp auf init. Das heisst fuer das script, dass keine manuelle Temperatur eingestellt ist.

          Ein setzen der Temperatur wird dann akzeptiert und es wird ein Zeitstempel gesetzt (aktuelle Zeit plus Anzahl Minuten (Gueltigkeit) laut Einstellung)

          Beim zweiten mal sitzt vermutlich der Zeitstempel noch. Damit wird eine weitere manuelle Temperatur zwar aktzeptiert, die läuft aber mit dem vorher gesetzten Zeitstempel ab.

          Du könntest probieren das Feld Source_TimeStamp mit einer neuen Gültigkeit zu versehen. Das Format muss so aussehen: 2018/03/31 16:54:34

          Dann sollte das setzen einer neuen manuellen Temp kein Problem sein

          vG Looxer

          1 Antwort Letzte Antwort
          0
          • L Offline
            L Offline
            looxer01
            schrieb am zuletzt editiert von
            #354

            @Lachi:

            Was mich halt wundert, habe den Feiertag auf false gesetzt und trotzdem möchte er den Feiertag Adapter haben?

            War das bei euch auch so? `

            Hi,

            Fehler habe ich gefunden. Ich denke, dass ich am Montag eine neue Version poste.

            Vielen Dank für die Meldung.

            vG Looxer

            1 Antwort Letzte Antwort
            0
            • Q Offline
              Q Offline
              quorle
              schrieb am zuletzt editiert von
              #355

              @looxer01:

              @Lachi:

              Was mich halt wundert, habe den Feiertag auf false gesetzt und trotzdem möchte er den Feiertag Adapter haben?

              War das bei euch auch so?
              Hi,

              Fehler habe ich gefunden. Ich denke, dass ich am Montag eine neue Version poste.

              Vielen Dank für die Meldung.

              vG Looxer

              Das klingt sehr gut. Danke. Sind in der neuen Version dann alle Neuerungen enthalten?

              Wäre es eventuell einen Punkt einzufügen, damit man eine solltempvorgabe an den Regler senden kann? Sprich, dass mein anderes Script die neue Solltempvorgabe in dein Script schreiben kan? Denn leider funktioniert das so mit der manuellen Vorgabe nicht. Danke.

              1 Antwort Letzte Antwort
              0
              • L Offline
                L Offline
                looxer01
                schrieb am zuletzt editiert von
                #356

                @looxer01:

                Sind in der neuen Version dann alle Neuerungen enthalten? `
                Hi,

                folgende Bugfixes und Ergänzungen sind enthalten:

                // Version 2.00b03 10.02.2018 -  dritte Beta
                //.............................Manuelle Temperaturen werden bei Scriptstart ignoriert/zurückgesetzt
                //.............................Thermostabtypetab Position 4 auf Position 8 (nach den Wandthermosteten) verschoben
                //.............................NoneHMTab - Fuellen der Position 12 in Controltab falsch (mit 0 ersetzt)
                //.............................Bei gleichen Zeiten im schedule von verschiedenen Räumen kam es dazu, dass nicht geschaltet wurde. Eine Zeitverzögerung eingebaut
                //.............................externe Dateiausgabe bei manuellen Aenderungen hinzugefügt (writelog)
                //.............................Fehler in Routine Sensor Change bei direktvernuepften Fenstersensoren beseitigt. 
                //.............................Fehler bei den Subscriptions fuer Feiertage fuehrte zu Warnmeldungen, wenn kein Feiertagsadapter genutzt wurde
                
                

                @quorle:

                Wäre es eventuell einen Punkt einzufügen, damit man eine solltempvorgabe an den Regler senden kann? Sprich, dass mein anderes Script die neue Solltempvorgabe in dein Script schreiben kan? Denn leider funktioniert das so mit der manuellen Vorgabe `

                ich denke, dass das mit den jetzingen Mitteln gehen sollte.

                Dabei muessen 2 Datenpunkte beachtet werden.

                View_Manually_Adjusted - hier kann die Temperatur eingegeben werden

                View_ManTemp_Validity - hier muss die Ablaufzeit der Temp eingestellt werden: Das Format muss so aussehen: 2018/03/31 16:54:34

                kannst du das mal probieren ?

                vG Looxer

                1 Antwort Letzte Antwort
                0
                • Q Offline
                  Q Offline
                  quorle
                  schrieb am zuletzt editiert von
                  #357

                  @looxer01:

                  @looxer01:

                  Sind in der neuen Version dann alle Neuerungen enthalten? `
                  Hi,

                  folgende Bugfixes und Ergänzungen sind enthalten:

                  // Version 2.00b03 10.02.2018 -  dritte Beta
                  //.............................Manuelle Temperaturen werden bei Scriptstart ignoriert/zurückgesetzt
                  //.............................Thermostabtypetab Position 4 auf Position 8 (nach den Wandthermosteten) verschoben
                  //.............................NoneHMTab - Fuellen der Position 12 in Controltab falsch (mit 0 ersetzt)
                  //.............................Bei gleichen Zeiten im schedule von verschiedenen Räumen kam es dazu, dass nicht geschaltet wurde. Eine Zeitverzögerung eingebaut
                  //.............................externe Dateiausgabe bei manuellen Aenderungen hinzugefügt (writelog)
                  //.............................Fehler in Routine Sensor Change bei direktvernuepften Fenstersensoren beseitigt. 
                  //.............................Fehler bei den Subscriptions fuer Feiertage fuehrte zu Warnmeldungen, wenn kein Feiertagsadapter genutzt wurde
                  
                  

                  @quorle:

                  Wäre es eventuell einen Punkt einzufügen, damit man eine solltempvorgabe an den Regler senden kann? Sprich, dass mein anderes Script die neue Solltempvorgabe in dein Script schreiben kan? Denn leider funktioniert das so mit der manuellen Vorgabe `

                  ich denke, dass das mit den jetzingen Mitteln gehen sollte.

                  Dabei muessen 2 Datenpunkte beachtet werden.

                  View_Manually_Adjusted - hier kann die Temperatur eingegeben werden

                  View_ManTemp_Validity - hier muss die Ablaufzeit der Temp eingestellt werden: Das Format muss so aussehen: 2018/03/31 16:54:34

                  kannst du das mal probieren ?

                  vG Looxer `

                  Also ich habe jetzt einmal folgendes gemacht:

                  1. Ich lasse alle 2 Stunden das aktuelle Datum per kleinem Script auf "View_ManTemp_Validity" senden.

                  2. Die Gültigkeit habe ich in deinem Script einmal mir 23 Stunden angegeben.

                  3. Die "neue Solltempvorgabe" lasse ich alle 15 Minuten nun zu deinem Script unter "View_Manually_Adjusted" senden.

                  Ich werde das mal einfach heute so laufen lassen und Morgen, oder heute Abend einmal berichten, wie der Verlauf und die Temperaturkurven aussehen.

                  Ich hätte da noch eine Frage:

                  In wie weit greift die manuelle Temperaturvorgabe in deinem Script eigentlich den Rest an? Also Wenn man immer eine manuelle Temeratur setzt, was wird dadurch alles beeinträchtigt ( Kalender, Abwesenheit, Fenstererkennung,…. )?

                  Muss der Button " Anwesenheit" immer da sein?

                  1 Antwort Letzte Antwort
                  0
                  • Q Offline
                    Q Offline
                    quorle
                    schrieb am zuletzt editiert von
                    #358

                    Also, ich hab das jetzt einmal versuchsweise laufen lassen und auch einmal mit den Zeiten gespielt, aber es gibt mit dieser Möglichkeit leider viele Probleme:

                    1. Wenn eine manuelle Temp gestellt ist, wird der Wochenplan ausser Kraft gesetz.

                    2. Es ist wirklich sehr schwierig alles Zeitlich aufeinander abzustimmen und es kommt sehr oft zu zeitlichen Verschiebungen.

                    Es wäre wirklich geschickter, auf eine State zu schreiben, die von deinem Script verwendet wird und dein Script auf den Regler schreibt.

                    1 Antwort Letzte Antwort
                    0
                    • L Offline
                      L Offline
                      looxer01
                      schrieb am zuletzt editiert von
                      #359

                      @quorle:

                      Es wäre wirklich geschickter, auf eine State zu schreiben, die von deinem Script verwendet wird und dein Script auf den Regler schreibt. `
                      Hi,

                      dann verstehe ich die Logik noch nicht so ganz. Manuelle Temp und Wochenplan sind ja 2 unterschiedliche Dinge.

                      Was soll denn das Kriterium sein für die Rückkehr vom Wochenplan ?

                      vG Looxer

                      1 Antwort Letzte Antwort
                      0
                      • Q Offline
                        Q Offline
                        quorle
                        schrieb am zuletzt editiert von
                        #360

                        @looxer01:

                        @quorle:

                        Es wäre wirklich geschickter, auf eine State zu schreiben, die von deinem Script verwendet wird und dein Script auf den Regler schreibt. `
                        Hi,

                        dann verstehe ich die Logik noch nicht so ganz. Manuelle Temp und Wochenplan sind ja 2 unterschiedliche Dinge.

                        Was soll denn das Kriterium sein für die Rückkehr vom Wochenplan ?

                        vG Looxer `

                        Guten Morgen,

                        Ich versuche es einmal zu erklären:

                        1. Dein Script ist der Hauptteil. Es setzt die Temperaturen über den Wochenplan

                        2. Ich greife die aktuelle einzustellende Temp von deinem Script ab und rechne die Temperatur um ( mittels eines anderen Scriptes )

                        3. Da dein Script die Temperatur zum Regler sendet, muss ich die neu errechnete Temp wieder in dein Script integrieren, somit kann dein Script die Temp wieder zum Regler senden und dein Script ganz normal weiter arbeiten.

                        4. Du sendest ja an einer Zentralen Stelle alle Temp´s zu den Reglern, dies müsste auf einen State gesetzt werden. Und ein weiteres State hinzugefügt werden wo dein Script noch eine neue Temp bekommt, die es dann anstatt der Tempvorgabe in deinem Script zum senden an den Regler nimmt.

                        Also kurz gesagt: Dein Script gibt die Tempvorgabe und sendet sie auf einem State, nennen wir ihn einmal AUSGANG, diesen AUSGANG verwende ich und schicke die verarbeitet Temp wieder auf einen State, nennen wir ihn EINGANG. Und erst dann schickt dein Script den EINGANG an die Regler. Somit sendet dein Script nur die Temp des State EINGANG an die Regler. Das ganze andere Script sollte unberührt weiter funktionieren.

                        Etwas kompliziert das ganze, aber ich versuche gerade eine Regelung aufzubauen.

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #361

                          @quorle:

                          3. Da dein Script die Temperatur zum Regler sendet, muss ich die neu errechnete Temp wieder in dein Script integrieren, somit kann dein Script die Temp wieder zum Regler senden und dein Script ganz normal weiter arbeiten. `
                          Der im PI-Regler-Script errechnete Sollwert sollte direkt zum Thermostaten gesendet werden, d.h. dieser Thermostat sollte aus dem Skript von @Looxer ausgeklammert werden (aus Gewerk entfernen).

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • L Offline
                            L Offline
                            looxer01
                            schrieb am zuletzt editiert von
                            #362

                            @quorle:

                            Also kurz gesagt: Dein Script gibt die Tempvorgabe und sendet sie auf einem State, `
                            Hi,

                            also, dann sollte das so funktionieren.

                            Relevante Datenpunkte

                            die aktuell geplante Temperatur (lt Wochenplan) befindet sich in Feld: Source_Last_Temp

                            Die manuell eingegebene Temp befindet sich in Feld: View_Manually_Adjusted

                            Vorrausetzung:

                            Du stellst im View die Dauer der manuellen Temp auf "0". Damit wird erst beim nächsten Planwechsel eine neue Temp lt Wochenplan eingestellt.

                            1. Dein Programm nimmt die aktuell geplante Temp: Source_Last_Temp und errechnet die neue Temp nach deinen Vorgaben

                            2. Die von dir neu errechnete Temp wird von deinem Script in View_Manually_Adjusted eingestellt

                            3. Beim nächsten geplanten Wechsel setzt das Heizungsscript die View_Manually_Adjusted auf "0"

                            4. Über Subscription fängt dein script diese Aenderung ab (wenn auf null gesetzt) und startet erneut mit Schritt 1

                            oder hattest du das so schon probiert ?

                            vG Looxer

                            1 Antwort Letzte Antwort
                            0
                            • L Offline
                              L Offline
                              looxer01
                              schrieb am zuletzt editiert von
                              #363

                              Hi,

                              in der letzten Zeit gab es ja ein paar Korrekturen zum Script.

                              Diese habe ich in Beta 03 Version 20b03 zusammengefasst.

                              ChangeLog:

                              // Version 2.00b03 02.04.2018 -  dritte Beta
                              //.............................Manuelle Temperaturen werden bei Scriptstart ignoriert/zurückgesetzt
                              //.............................Thermostabtypetab Position 4 auf Position 8 (nach den Wandthermosteten) verschoben
                              //.............................NoneHMTab - Fuellen der Position 12 in Controltab falsch (mit 0 ersetzt)
                              //.............................Bei gleichen Zeiten im schedule von verschiedenen Räumen kam es dazu, dass nicht geschaltet wurde. Eine Zeitverzögerung eingebaut
                              //.............................externe Dateiausgabe bei manuellen Aenderungen hinzugefügt (writelog)
                              //.............................Fehler in Routine Sensor Change bei direktvernuepften Fenstersensoren beseitigt. 
                              //.............................Fehler bei den Subscriptions fuer Feiertage fuehrte zu Warnmeldungen, wenn kein Feiertagsadapter genutzt wurde
                              //
                              
                              

                              Wer das Script bereits nutzt muss lediglich alles nach den Experteneinstellungen kopieren.

                              Alle Einstellungen können also aus der Vorversion übernommen werden.

                              Ich empfehle die vorherige Version eine zeitlang als Sicherung zu behalten. (deaktiviert natürlich)

                              Das angepasste Programm befindet sich, wie immer, im ersten Post und kann dort heruntergeladen werden.

                              vG Looxer

                              1 Antwort Letzte Antwort
                              0
                              • Q Offline
                                Q Offline
                                quorle
                                schrieb am zuletzt editiert von
                                #364

                                Also, ich habe heute wieder mal etwas experimentiert, aber leider führen beide Lösungswege nicht zum Erfolg.

                                @looxer01:

                                Bei deinem Lösungsvorschlag, kann ich Zeitlich gesehen ja nicht alle ( sagen wir einfach einmal ) 15 Minuten auf den Regler schreiben. Da man ja immer warten müsste bis eine neue Temp seitens deines Wochenprogrammes angewählt wird.

                                @paul53:

                                Deinen Lösungsansatz habe ich auch versucht, jedoch funktioniert dann das Heizungsscript nicht mehr, da er keine Regler erkennt.

                                1 Antwort Letzte Antwort
                                0
                                • L Offline
                                  L Offline
                                  looxer01
                                  schrieb am zuletzt editiert von
                                  #365

                                  @quorle:

                                  Bei deinem Lösungsvorschlag, kann ich Zeitlich gesehen ja nicht alle ( sagen wir einfach einmal ) 15 Minuten auf den Regler schreiben. Da man ja immer warten müsste bis eine neue Temp seitens deines Wochenprogrammes angewählt wird. `
                                  Wieso musst du warten auf die Umschaltung der Temperatur des Planes ? Du kannst jederzeit eine manuelle Temp setzen.

                                  Nur wird diese zum nächsten Schaltpunkt wieder zurückgesetzt. Daher die Idee das über eine subscription zu machen.

                                  So kannst du abhängig von deiner Logik eine Temp setzen oder nicht, und zwar auch zum Zeitpunkt wenn die nächste Temp wieder vom Script gesetzt wurde.

                                  vG Looxer

                                  1 Antwort Letzte Antwort
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von
                                    #366

                                    @quorle:

                                    Deinen Lösungsansatz habe ich auch versucht, jedoch funktioniert dann das Heizungsscript nicht mehr, da er keine Regler erkennt. `
                                    Das kann ich zwar nicht nachvollziehen, aber dann versuche mal die brachiale Methode mit Austausch der stateId vor Zeile 494.

                                        if(stateId == 'hm-rpc.1.OEQ1712335.4.MANU_MODE') stateId = 'javascript.0.Heizung.Schlafzimmer.Solltemperatur';
                                        setState(stateId, val);
                                    
                                    

                                    Ich denke, dass an "MANU_MODE" und nicht an "SET_TEMPERATURE" gesendet wird ?

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                    1 Antwort Letzte Antwort
                                    0
                                    • Q Offline
                                      Q Offline
                                      quorle
                                      schrieb am zuletzt editiert von
                                      #367

                                      Also ich hab es jetzt einmal so:

                                      @looxer01:

                                      @looxer01:

                                      @quorle:

                                      Bei deinem Lösungsvorschlag, kann ich Zeitlich gesehen ja nicht alle ( sagen wir einfach einmal ) 15 Minuten auf den Regler schreiben. Da man ja immer warten müsste bis eine neue Temp seitens deines Wochenprogrammes angewählt wird. `
                                      Wieso musst du warten auf die Umschaltung der Temperatur des Planes ? Du kannst jederzeit eine manuelle Temp setzen.

                                      Nur wird diese zum nächsten Schaltpunkt wieder zurückgesetzt. Daher die Idee das über eine subscription zu machen.

                                      So kannst du abhängig von deiner Logik eine Temp setzen oder nicht, und zwar auch zum Zeitpunkt wenn die nächste Temp wieder vom Script gesetzt wurde.

                                      vG Looxer `

                                      So sieht mein Regelscript momentan aus, anders bekomme ich es leider nicht hin. Ich stell mich da wohl zu sehr an. Bei dem Regelscript hat mir paul53 schon sehr geholfen.Es wartet und wenn eine "0" gemeldet wird, sagt er das auch in der LOG, jedoch schickt das Script dann erst nach der eingestellten Zeit ( 10 Minuten ) den neuen Wert an dein Heizscript.

                                      ! ````
                                      // PI-Regler Raumheizung für Kaskade Raumsensor - HKT-Temperatur
                                      ! var idHeizscript = 'javascript.0.Heizung.Heizplan.Schlafzimmer.View_Manually_Adjusted';
                                      ! // Trigger neue temperatur
                                      on(idHeizscript, function (obj) {
                                      if (obj.state.val === 0) {
                                      log('Trigger neue Temperaturvorgabe');
                                      }
                                      });
                                      ! // P-Band in K, Nachstellzeit in s
                                      const Xp = 4;
                                      const Tn = 2400; // 120 entspricht 30 Sekunden
                                      ! const yid = 'javascript.0.Heizung.Heizplan.Schlafzimmer.View_Manually_Adjusted'; // neue Temperaturvorgabe ( Ausgang PI-Regler ) an Heizscript
                                      const xid = 'hm-rpc.1.CUX1200001.1.TEMPERATURE'; // gemessene Temperatur ( Sensor ) Extern
                                      const wid = 'javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp'; // gesetzte Temperatur ( Heizungsscript ) von Heizscript
                                      ! const PI = require('pi-controller');
                                      ! var pi = new PI(Xp, Tn);
                                      pi.setOutputMax(5.0); // default: OutputMax = 100
                                      ! function control() {
                                      var x = getState(xid).val; // Istwert in °C
                                      var w = getState(wid).val; // Sollwert in °C
                                      var y = pi.Control(w - x) - 2; // +3 / -2 Grad
                                      y = Math.round(2 * (w + y)) / 2; // Auflösung 0,5 Grad (Thermostat)
                                      setState(yid, y);
                                      }
                                      ! control(); // Script start
                                      // on() auskommentiert, denn es soll nur alle 10 Minuten an Thermostat gesendet werden
                                      // on(xid, control);
                                      // on(wid, control);
                                      ! var timer = null;
                                      if (Tn) {
                                      timer = setInterval(control, 250 * Tn );
                                      }
                                      else {
                                      if (timer) {
                                      clearInterval(timer);
                                      timer = null;
                                      }
                                      }
                                      !

                                      
                                      @paul53:
                                      
                                      Meinst du diesen Absatz hier im Heizungsscript?
                                      
                                      >! ````
                                      function subscribeUserTab() {
                                          for (var x in UserExitTab ) {
                                              if (UserExitTab[x][0] === "initial" ) {
                                                  continue;
                                              }
                                              var subscribeObj = {id:  UserExitTab[x][0]};
                                              switch (UserExitTab[x][2]) {
                                                  case "valNe":
                                                  case "valGt":
                                                  case "valGe":
                                                  case "valLt":
                                                  case "valLe":
                                                  case "val":    subscribeObj[UserExitTab[x][2]] = UserExitTab[x][3];
                                                                 break;
                                                  case "any":    subscribeObj.change = "any";
                                                                 break;
                                              }
                                              on(subscribeObj, function(obj) {
                                                  UserExitPrep(obj.id, obj.state.val);
                                              });    // ende on id
                                          } // Endfor
                                      }
                                      

                                      Zeile 494 wäre dann folgender Absatz (Zeile 489 - 493):

                                      ! function subscribeUserTab() { for (var x in UserExitTab ) { if (UserExitTab[x][0] === "initial" ) { continue; } !

                                      Ich weis, ich kann nervig sein, aber ich bin für eure große Hilfe wirklich dankbar, da ich mich dafür wirklich interessiere, aber leider noch sehr am lernen bin. Ich kann mich nur immer wieder bei euch bedanken.

                                      1 Antwort Letzte Antwort
                                      0
                                      • paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #368

                                        @quorle:

                                        Meinst du diesen Absatz hier im Heizungsscript? `
                                        Nein, anscheinend haben sich durch die Anpassung an die eigenen Gegebenheiten die Zeilennummern zu sehr verändert. Suche einfach nach

                                        setState(stateId
                                        

                                        und füge vor der Zeile

                                            setState(stateId, val);
                                        ````den Austausch der ID ein
                                        
                                        if(stateId == 'hm-rpc.1.OEQ1712335.4.MANU_MODE') stateId = 'javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp';
                                        
                                        Im Skript für den Hauptregler der Kaskade sende dann direkt an den HKT, indem Du die richtige ID vorgibst.
                                        

                                        const yid = 'hm-rpc.1.OEQ1712335.4.MANU_MODE'; // neue Temperaturvorgabe ( Ausgang PI-Regler ) an HKT

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                        1 Antwort Letzte Antwort
                                        0
                                        • L Offline
                                          L Offline
                                          looxer01
                                          schrieb am zuletzt editiert von
                                          #369

                                          @quorle:

                                          So sieht mein Regelscript momentan aus, anders bekomme ich es leider nicht hin. Ich stell mich da wohl zu sehr an. Bei dem Regelscript hat mir paul53 schon sehr geholfen.Es wartet und wenn eine "0" gemeldet wird, sagt er das auch in der LOG, jedoch schickt das Script dann erst nach der eingestellten Zeit ( 10 Minuten ) den neuen Wert an dein Heizscript. `

                                          Hi,

                                          mein Verständnis über das was du erreichen willst

                                          • Ausgangspunkt ist der Wochenheizpolan

                                          • Du machst Anpassungen an der aktuellen Temperatur

                                          • und willst diese als aktuelle SollTemp verwenden

                                          • gleichzeitig willst du die Funktionatäten des scriptes nutzen (Anwesenheiten, Urlaub, ICAL)

                                          Es gibt zwei Möglichkeiten das zu erreichen

                                          1. Ich mache ein paar Anpassungen damit die manuell gesetzte Temp erhalten bleibt und Anwesenheit etc noch funktiuoniert

                                          Nachteil: manuelle Temperaturen (am Thermostat eingestellt) werden nicht funktionieren. Das zusätzlich zu machen ein hoher Aufwand

                                          2. Du nutzt den aktuellen ZeitSlot (und sicherst die geplante Temp weg und ersetzt diese mit deiner neuen.) Nach Ablauf der Temp speicherst du die gesicherte Temp im abgelaufenen Slot und so weiter.

                                          Nachteil: erfordert mehr Programmierung auf deiner Seite

                                          was meinst du ?

                                          vG Looxer

                                          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

                                          781

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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