Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Blockly
  5. Einfache Heizungsreglung

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    342

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    309

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    931

Einfache Heizungsreglung

Geplant Angeheftet Gesperrt Verschoben Blockly
60 Beiträge 8 Kommentatoren 2.5k Aufrufe 6 Beobachtet
  • Ä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.
  • MartinPM Online
    MartinPM Online
    MartinP
    schrieb am zuletzt editiert von MartinP
    #15

    @paul53 "steuere" sollte man schon verwenden, wenn es darum geht, dass die Änderung auch im Gerät ankommt... Nur wenn es egal ist, ob das Gerät auch den Wert bekommt, reicht auch ein "aktualisiere"... Bei jedem "wurde geändert" Trigger wird ja maximal ein "steuere" Aufruf auch wirklich durchlaufen.

    Wird doch hier diskutiert https://forum.iobroker.net/topic/5787/blockly-unterschied-zwischen-steuere-und-aktualisiere

    Der Komplexitäts-Unterschied auf Javascript-Ebene ist jedenfalls nicht besonders groß wenn man sich den erzeugten Code so anschaut ...

    Hier ein "aktualisiere" Block (Wert auf false, Bestätigt auf true)

    setState('0_userdata.0.Heizung.Nachtabsenkung' /* Nachtabsenkung */, false, true);
    

    Und hier eine "steuere" Block (Wert auf 18.7, Bestätigt durch implizite Parametrierung auf false (darum muss sich das Gerät kümmern)

    setState('mqtt.0.thermostat.desired.temperature' /* thermostat/desired/temperature */, 18.7);
    

    Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
    Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
    Linux pve 6.17.9-1-pve
    6 GByte RAM für den Container
    Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
    Remote-Access über Wireguard der Fritzbox

    DJMarc75D HomoranH paul53P 3 Antworten Letzte Antwort
    0
    • MartinPM MartinP

      @paul53 "steuere" sollte man schon verwenden, wenn es darum geht, dass die Änderung auch im Gerät ankommt... Nur wenn es egal ist, ob das Gerät auch den Wert bekommt, reicht auch ein "aktualisiere"... Bei jedem "wurde geändert" Trigger wird ja maximal ein "steuere" Aufruf auch wirklich durchlaufen.

      Wird doch hier diskutiert https://forum.iobroker.net/topic/5787/blockly-unterschied-zwischen-steuere-und-aktualisiere

      Der Komplexitäts-Unterschied auf Javascript-Ebene ist jedenfalls nicht besonders groß wenn man sich den erzeugten Code so anschaut ...

      Hier ein "aktualisiere" Block (Wert auf false, Bestätigt auf true)

      setState('0_userdata.0.Heizung.Nachtabsenkung' /* Nachtabsenkung */, false, true);
      

      Und hier eine "steuere" Block (Wert auf 18.7, Bestätigt durch implizite Parametrierung auf false (darum muss sich das Gerät kümmern)

      setState('mqtt.0.thermostat.desired.temperature' /* thermostat/desired/temperature */, 18.7);
      
      DJMarc75D Offline
      DJMarc75D Offline
      DJMarc75
      schrieb am zuletzt editiert von DJMarc75
      #16

      ... hier stand Quatsch :)

      Lehrling seit 1975 !!!
      Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
      https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

      MartinPM 1 Antwort Letzte Antwort
      0
      • DJMarc75D DJMarc75

        ... hier stand Quatsch :)

        MartinPM Online
        MartinPM Online
        MartinP
        schrieb am zuletzt editiert von
        #17

        @djmarc75 Ist die Frage, ob ich @paul53 richtig verstanden habe.
        Aber auch wenn der "steuere" Aufruf schon einige Abläufe auslöst ist das "steuere" hier unvermeidlich

        Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
        Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
        Linux pve 6.17.9-1-pve
        6 GByte RAM für den Container
        Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
        Remote-Access über Wireguard der Fritzbox

        1 Antwort Letzte Antwort
        0
        • MartinPM MartinP

          @paul53 "steuere" sollte man schon verwenden, wenn es darum geht, dass die Änderung auch im Gerät ankommt... Nur wenn es egal ist, ob das Gerät auch den Wert bekommt, reicht auch ein "aktualisiere"... Bei jedem "wurde geändert" Trigger wird ja maximal ein "steuere" Aufruf auch wirklich durchlaufen.

          Wird doch hier diskutiert https://forum.iobroker.net/topic/5787/blockly-unterschied-zwischen-steuere-und-aktualisiere

          Der Komplexitäts-Unterschied auf Javascript-Ebene ist jedenfalls nicht besonders groß wenn man sich den erzeugten Code so anschaut ...

          Hier ein "aktualisiere" Block (Wert auf false, Bestätigt auf true)

          setState('0_userdata.0.Heizung.Nachtabsenkung' /* Nachtabsenkung */, false, true);
          

          Und hier eine "steuere" Block (Wert auf 18.7, Bestätigt durch implizite Parametrierung auf false (darum muss sich das Gerät kümmern)

          setState('mqtt.0.thermostat.desired.temperature' /* thermostat/desired/temperature */, 18.7);
          
          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #18

          @martinp sagte in Einfache Heizungsreglung:

          "steuere" sollte man schon verwenden

          ds wurde ja auch nicht angezweifelt. Nur die unnötige zweifache Verwendung!

          kein Support per PN! - Fragen im Forum stellen -
          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
          Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          0
          • MartinPM MartinP

            @paul53 "steuere" sollte man schon verwenden, wenn es darum geht, dass die Änderung auch im Gerät ankommt... Nur wenn es egal ist, ob das Gerät auch den Wert bekommt, reicht auch ein "aktualisiere"... Bei jedem "wurde geändert" Trigger wird ja maximal ein "steuere" Aufruf auch wirklich durchlaufen.

            Wird doch hier diskutiert https://forum.iobroker.net/topic/5787/blockly-unterschied-zwischen-steuere-und-aktualisiere

            Der Komplexitäts-Unterschied auf Javascript-Ebene ist jedenfalls nicht besonders groß wenn man sich den erzeugten Code so anschaut ...

            Hier ein "aktualisiere" Block (Wert auf false, Bestätigt auf true)

            setState('0_userdata.0.Heizung.Nachtabsenkung' /* Nachtabsenkung */, false, true);
            

            Und hier eine "steuere" Block (Wert auf 18.7, Bestätigt durch implizite Parametrierung auf false (darum muss sich das Gerät kümmern)

            setState('mqtt.0.thermostat.desired.temperature' /* thermostat/desired/temperature */, 18.7);
            
            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #19

            @martinp sagte: "steuere" sollte man schon verwenden

            Richtig, aber möglichst nur einmal pro DP innerhalb einer Callback-Funktion.

            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

            MartinPM 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @martinp sagte: "steuere" sollte man schon verwenden

              Richtig, aber möglichst nur einmal pro DP innerhalb einer Callback-Funktion.

              MartinPM Online
              MartinPM Online
              MartinP
              schrieb am zuletzt editiert von
              #20

              @paul53 Das ist doch so... bei jedem Durchlauf des Skriptes wird ja nur maximal einer der beiden Zweige "falls" oder "sonst falls" durchlaufen... maximal wird das "steuere" im "falls" Zweig durchlaufen, oder das im "sonst falls" Zweig.
              NIE in einem Durchlauf beide!

              Die meiste Zeit wird wahrscheinlich bei einem Durchlauf durch die zusätzliche Abfrage der Hilfsvariable sogar gar kein "steuere" Aufruf erfolgen ...

              Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
              Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
              Linux pve 6.17.9-1-pve
              6 GByte RAM für den Container
              Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
              Remote-Access über Wireguard der Fritzbox

              paul53P 1 Antwort Letzte Antwort
              0
              • MartinPM MartinP

                @paul53 Das ist doch so... bei jedem Durchlauf des Skriptes wird ja nur maximal einer der beiden Zweige "falls" oder "sonst falls" durchlaufen... maximal wird das "steuere" im "falls" Zweig durchlaufen, oder das im "sonst falls" Zweig.
                NIE in einem Durchlauf beide!

                Die meiste Zeit wird wahrscheinlich bei einem Durchlauf durch die zusätzliche Abfrage der Hilfsvariable sogar gar kein "steuere" Aufruf erfolgen ...

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #21

                @martinp sagte: Das ist doch so...

                Ja, auf die CPU-Last hat es keinen Einfluss, aber jeder Funktionsaufruf belegt RAM. Was meinst du wohl, weshalb ioBroker solch ein RAM-Fresser ist?

                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

                MartinPM 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @martinp sagte: Das ist doch so...

                  Ja, auf die CPU-Last hat es keinen Einfluss, aber jeder Funktionsaufruf belegt RAM. Was meinst du wohl, weshalb ioBroker solch ein RAM-Fresser ist?

                  MartinPM Online
                  MartinPM Online
                  MartinP
                  schrieb am zuletzt editiert von MartinP
                  #22

                  @paul53

                  aber jeder Funktionsaufruf belegt RAM. Was meinst du wohl, weshalb ioBroker solch ein RAM-Fresser ist?

                  Naja, das Anlegen einer Hilfsvariable, um unterhalb des Auskasperns, was denn nun gemacht werden soll nur EINEN Aufruf von SetState statt ZWEIEN zu generieren frisst auch Speicher ...

                  Ich bin aber nicht so fit im Abschätzen des Speicherbedarfs eines Funktionsaufrufes in Javascript - kann mir aber EIGENTLICH nicht vorstellen, dass die modernen Javascript Engines noch bei solchen simplen Dingen wie Funktionsaufrufen bereits beim Anlegen des JIT-Codes so viel Speicher fressen....

                  Bei C++ würde ich sagen "Bullshit" ...

                  Noch ein kleiner Einwand am Rande ....

                  Wenn man minimalen Speicherbedarf haben will, sollte man Blockly nicht verwenden...

                  Ein Beispiel:
                  5caf3a71-12b5-49aa-b7ad-19afb9b2682d-image.png
                  Javascript Code dazu:

                  schedule("0 13 19 * * *", async () => {
                    setState('sonoff.0.Bewaesserung.POWER' /* Bewaesserung POWER */, true);
                    setStateDelayed('sonoff.0.Bewaesserung.POWER' /* Bewaesserung POWER */, false, 35000, false);
                  });
                  

                  Codegröße des ganzen Scripts 214 Byte

                  Der Minifier von DigitalOcean macht daraus 140 Byte...

                  https://www.digitalocean.com/community/tools/minify

                  schedule("0 13 19 * * *",(async()=>{setState("sonoff.0.Bewaesserung.POWER",!0),setStateDelayed("sonoff.0.Bewaesserung.POWER",!1,35e3,!1)}));
                  

                  Macht man die komischen Kommentare, die Blockly da hineinwirft weg, kommt man auch durch "Handoptimieren" auf 164 Byte

                  schedule("0 13 19 * * *", async () => {
                    setState('sonoff.0.Bewaesserung.POWER', true);
                    setStateDelayed('sonoff.0.Bewaesserung.POWER', false, 35000, false);
                  });
                  

                  Ich kaufe mir lieber einen RAM-Riegel mehr, statt mir Gedanken um 140 vs 214 Bytes zu machen ;-)

                  Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                  Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                  Linux pve 6.17.9-1-pve
                  6 GByte RAM für den Container
                  Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                  Remote-Access über Wireguard der Fritzbox

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • MartinPM MartinP

                    @paul53

                    aber jeder Funktionsaufruf belegt RAM. Was meinst du wohl, weshalb ioBroker solch ein RAM-Fresser ist?

                    Naja, das Anlegen einer Hilfsvariable, um unterhalb des Auskasperns, was denn nun gemacht werden soll nur EINEN Aufruf von SetState statt ZWEIEN zu generieren frisst auch Speicher ...

                    Ich bin aber nicht so fit im Abschätzen des Speicherbedarfs eines Funktionsaufrufes in Javascript - kann mir aber EIGENTLICH nicht vorstellen, dass die modernen Javascript Engines noch bei solchen simplen Dingen wie Funktionsaufrufen bereits beim Anlegen des JIT-Codes so viel Speicher fressen....

                    Bei C++ würde ich sagen "Bullshit" ...

                    Noch ein kleiner Einwand am Rande ....

                    Wenn man minimalen Speicherbedarf haben will, sollte man Blockly nicht verwenden...

                    Ein Beispiel:
                    5caf3a71-12b5-49aa-b7ad-19afb9b2682d-image.png
                    Javascript Code dazu:

                    schedule("0 13 19 * * *", async () => {
                      setState('sonoff.0.Bewaesserung.POWER' /* Bewaesserung POWER */, true);
                      setStateDelayed('sonoff.0.Bewaesserung.POWER' /* Bewaesserung POWER */, false, 35000, false);
                    });
                    

                    Codegröße des ganzen Scripts 214 Byte

                    Der Minifier von DigitalOcean macht daraus 140 Byte...

                    https://www.digitalocean.com/community/tools/minify

                    schedule("0 13 19 * * *",(async()=>{setState("sonoff.0.Bewaesserung.POWER",!0),setStateDelayed("sonoff.0.Bewaesserung.POWER",!1,35e3,!1)}));
                    

                    Macht man die komischen Kommentare, die Blockly da hineinwirft weg, kommt man auch durch "Handoptimieren" auf 164 Byte

                    schedule("0 13 19 * * *", async () => {
                      setState('sonoff.0.Bewaesserung.POWER', true);
                      setStateDelayed('sonoff.0.Bewaesserung.POWER', false, 35000, false);
                    });
                    

                    Ich kaufe mir lieber einen RAM-Riegel mehr, statt mir Gedanken um 140 vs 214 Bytes zu machen ;-)

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #23

                    @martinp sagte: Codegröße des ganzen Scripts 214 Byte

                    Wie stellst du die Codegröße fest?

                    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

                    MartinPM 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @martinp sagte: Codegröße des ganzen Scripts 214 Byte

                      Wie stellst du die Codegröße fest?

                      MartinPM Online
                      MartinPM Online
                      MartinP
                      schrieb am zuletzt editiert von MartinP
                      #24

                      @paul53 Die sagt mir https://www.digitalocean.com/community/tools/minify wenn ich den Quellcode dort hin kopiere...
                      Die Aussage ist aber in Zeiten von JIT und ähnlichen Tricks mit Vorsicht zu genießen.
                      Als Javascript noch ein reiner Interpreter war, sah das noch anders aus ...

                      b33ce131-084e-467f-af55-cc1ced3bbe65-grafik.png

                      Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                      Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                      Linux pve 6.17.9-1-pve
                      6 GByte RAM für den Container
                      Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                      Remote-Access über Wireguard der Fritzbox

                      1 Antwort Letzte Antwort
                      -1
                      • M Offline
                        M Offline
                        Mr.Kan1ster
                        schrieb am zuletzt editiert von
                        #25

                        @paul53 Ich habe eiiinige andere Themen gelesen und irgendwann tatsächlich gehofft "hoffentlich löst dieser Paul auch einfach mein Problem"

                        Ich weiss das ich dadurch wenig lerne, aber aktuell sitzt mir meine Frau im Nacken die in Ihrem temporären Büro (aka 2.Kinderzimmer) kalte Füße bekommt :)

                        @Wildbill
                        Ich hab diesen Expertenmodus Kopf gefunden, den Bleistift am Wert danach jedoch nicht. Aber wie es aussieht braucheich den auch nicht mehr.

                        @Codierknecht
                        Ich werd mich mal dran setzen und ETS dementsprechend durchgehen. Wie ihr ja schreibt, je länger ich warte desto mehr arbeit wird es.

                        Und danke auch an all die anderen Anteworten, das scheint hier sehr viel angenehmer zuzugehen als drüben im KNX User Forum :)

                        Ich teste Das Skript jetzt mal bis morgen abend und dann guck ich mal was im Bus so los war und wie war das zimmer ist.

                        CodierknechtC 1 Antwort Letzte Antwort
                        0
                        • M Mr.Kan1ster

                          @paul53 Ich habe eiiinige andere Themen gelesen und irgendwann tatsächlich gehofft "hoffentlich löst dieser Paul auch einfach mein Problem"

                          Ich weiss das ich dadurch wenig lerne, aber aktuell sitzt mir meine Frau im Nacken die in Ihrem temporären Büro (aka 2.Kinderzimmer) kalte Füße bekommt :)

                          @Wildbill
                          Ich hab diesen Expertenmodus Kopf gefunden, den Bleistift am Wert danach jedoch nicht. Aber wie es aussieht braucheich den auch nicht mehr.

                          @Codierknecht
                          Ich werd mich mal dran setzen und ETS dementsprechend durchgehen. Wie ihr ja schreibt, je länger ich warte desto mehr arbeit wird es.

                          Und danke auch an all die anderen Anteworten, das scheint hier sehr viel angenehmer zuzugehen als drüben im KNX User Forum :)

                          Ich teste Das Skript jetzt mal bis morgen abend und dann guck ich mal was im Bus so los war und wie war das zimmer ist.

                          CodierknechtC Online
                          CodierknechtC Online
                          Codierknecht
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #26

                          @mr-kan1ster sagte in Einfache Heizungsreglung:

                          aktuell sitzt mir meine Frau im Nacken

                          Da ist er wieder - der "WAF" 😁

                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                          HmIP|ZigBee|Tasmota|Unifi
                          Zabbix Certified Specialist
                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                          1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @mr-kan1ster
                            Du vergleichst den Sollwert mit einem Objekt - nicht mit einem Zahlenwert.
                            Außerdem sollte ein Zweipunkt-Regler immer eine Hysterese haben, damit im Grenzbereich nicht ständig geschaltet wird.

                            Blockly_temp.JPG

                            <xml xmlns="https://developers.google.com/blockly/xml">
                             <variables>
                               <variable id="(@L{1Dm:]ck~khb(y:~y">Solltemp Kind2</variable>
                               <variable id="${wtJ;M#@9#.+s)/(.Hx">ventil</variable>
                             </variables>
                             <block type="variables_set" id=":zeA?20y*Tg3gh6l`#XY" x="-563" y="-612">
                               <field name="VAR" id="(@L{1Dm:]ck~khb(y:~y">Solltemp Kind2</field>
                               <value name="VALUE">
                                 <block type="math_number" id="}{p#)E;:IVfY|{NKnc0P">
                                   <field name="NUM">22</field>
                                 </block>
                               </value>
                               <next>
                                 <block type="variables_set" id="Ig]Ov_oVEUU#_nZgDIyD">
                                   <field name="VAR" id="${wtJ;M#@9#.+s)/(.Hx">ventil</field>
                                   <value name="VALUE">
                                     <block type="get_value_var" id="T60^gU|A4%nl{o3s%*Pd">
                                       <field name="ATTR">val</field>
                                       <value name="OID">
                                         <shadow type="field_oid" id="D?j8qM[*:~kmXTt9z`,Q">
                                           <field name="oid">Object ID</field>
                                         </shadow>
                                         <block type="text" id="|0ONG0BC|O]~[gsq]!X:">
                                           <field name="TEXT">openknx.0.Kinderzimmer_2.Heizung_Kind_2.schaltende_Stellgröße_Kind2</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="on" id="+@5PayeP*}[`W31?Hn9m">
                                       <field name="OID">openknx.0.Kinderzimmer_2.Heizung_Kind_2.Isttemperatur_Kind2</field>
                                       <field name="CONDITION">ne</field>
                                       <field name="ACK_CONDITION"></field>
                                       <statement name="STATEMENT">
                                         <block type="controls_if" id="UJBeFU58ERJkbQ]G#7zS">
                                           <mutation elseif="1"></mutation>
                                           <value name="IF0">
                                             <block type="logic_compare" id="@_YREWj:WhZ0.UT#cR6d">
                                               <field name="OP">LT</field>
                                               <value name="A">
                                                 <block type="on_source" id="Jc5_X=JfO?o:s3-dx6%(">
                                                   <field name="ATTR">state.val</field>
                                                 </block>
                                               </value>
                                               <value name="B">
                                                 <block type="variables_get" id="t7Gy8=I2]G.0|MAwe-)k">
                                                   <field name="VAR" id="(@L{1Dm:]ck~khb(y:~y">Solltemp Kind2</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <statement name="DO0">
                                             <block type="variables_set" id="hG=Flo5WG*wOekv|/npx">
                                               <field name="VAR" id="${wtJ;M#@9#.+s)/(.Hx">ventil</field>
                                               <value name="VALUE">
                                                 <block type="math_number" id="VScSGUvke6=C4GFD/kzX">
                                                   <field name="NUM">100</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </statement>
                                           <value name="IF1">
                                             <block type="logic_compare" id="z%a^kJ{GZ0j@$k44[p-q">
                                               <field name="OP">GTE</field>
                                               <value name="A">
                                                 <block type="on_source" id="9s,}5N8J41sEGO#XdH7;">
                                                   <field name="ATTR">state.val</field>
                                                 </block>
                                               </value>
                                               <value name="B">
                                                 <block type="math_arithmetic" id="h8fIk@.[et~ZH]|}+eg)">
                                                   <field name="OP">ADD</field>
                                                   <value name="A">
                                                     <shadow type="math_number" id="{}alCLNT6Htf{jzb#P(V">
                                                       <field name="NUM">1</field>
                                                     </shadow>
                                                     <block type="variables_get" id="CS(=!J=$V?H^Ht/}-;MI">
                                                       <field name="VAR" id="(@L{1Dm:]ck~khb(y:~y">Solltemp Kind2</field>
                                                     </block>
                                                   </value>
                                                   <value name="B">
                                                     <shadow type="math_number" id="]ri{sIm3E/1%DR(.[}]q">
                                                       <field name="NUM">0.5</field>
                                                     </shadow>
                                                   </value>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <statement name="DO1">
                                             <block type="variables_set" id="4X:gNIjPO+XZdt4xzXFP">
                                               <field name="VAR" id="${wtJ;M#@9#.+s)/(.Hx">ventil</field>
                                               <value name="VALUE">
                                                 <block type="math_number" id="ykWReqRYOeReqcXFl~*9">
                                                   <field name="NUM">0</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </statement>
                                           <next>
                                             <block type="controls_if" id="qV70I!OxDm2N2Q,nhaq4">
                                               <value name="IF0">
                                                 <block type="logic_compare" id="w{k^gDE)CH7|_*$UVL$!">
                                                   <field name="OP">NEQ</field>
                                                   <value name="A">
                                                     <block type="variables_get" id="Y_YAv#,[Cb8WrRiahZ.5">
                                                       <field name="VAR" id="${wtJ;M#@9#.+s)/(.Hx">ventil</field>
                                                     </block>
                                                   </value>
                                                   <value name="B">
                                                     <block type="get_value_var" id="C9GoY#9QEp(V;_7UCJ*g">
                                                       <field name="ATTR">val</field>
                                                       <value name="OID">
                                                         <shadow type="field_oid" id="D?j8qM[*:~kmXTt9z`,Q">
                                                           <field name="oid">Object ID</field>
                                                         </shadow>
                                                         <block type="text" id="?b!A^SG4=jh]031(0YOa">
                                                           <field name="TEXT">openknx.0.Kinderzimmer_2.Heizung_Kind_2.schaltende_Stellgröße_Kind2</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                               <statement name="DO0">
                                                 <block type="control" id="{[cGXUC!mAzH}G{cNBw]">
                                                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                   <field name="OID">openknx.0.Kinderzimmer_2.Heizung_Kind_2.schaltende_Stellgröße_Kind2</field>
                                                   <field name="WITH_DELAY">FALSE</field>
                                                   <value name="VALUE">
                                                     <block type="variables_get" id="PJN`IJrhZH{c;(-E+)/c">
                                                       <field name="VAR" id="${wtJ;M#@9#.+s)/(.Hx">ventil</field>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </statement>
                                             </block>
                                           </next>
                                         </block>
                                       </statement>
                                     </block>
                                   </next>
                                 </block>
                               </next>
                             </block>
                            </xml>
                            

                            M Offline
                            M Offline
                            Mr.Kan1ster
                            schrieb am zuletzt editiert von
                            #27

                            @paul53
                            Das Zimmer ist heute morgen gemütlich warm auf 22°. Ich danke dir vielmals.
                            Aber jetzt zum Verstädndnis, was machen die grünen Bausteine?

                            Ich lese das so:
                            Setze die neue Variable "Ventil" auf den Wert den das Objekt schaltende Stellgröße hat. Also 0 oder 100.
                            Dann Temp Abgleich und auf oder zu drehen.
                            Und dann ?
                            Falls Ventil nicht den Wert 0 oder 100 hat, setze ihn auch 0 oder 100? Den teil verstehe ich absolut nicht. Und auch nicht wieso die Objekte so lange NAmen haben und in grün sind.

                            Wenn du mir das noch ganz kurz erläutern würdest könnte ich das auch das 1. Kinderzimmer übernehmen.

                            CodierknechtC 1 Antwort Letzte Antwort
                            0
                            • M Mr.Kan1ster

                              @paul53
                              Das Zimmer ist heute morgen gemütlich warm auf 22°. Ich danke dir vielmals.
                              Aber jetzt zum Verstädndnis, was machen die grünen Bausteine?

                              Ich lese das so:
                              Setze die neue Variable "Ventil" auf den Wert den das Objekt schaltende Stellgröße hat. Also 0 oder 100.
                              Dann Temp Abgleich und auf oder zu drehen.
                              Und dann ?
                              Falls Ventil nicht den Wert 0 oder 100 hat, setze ihn auch 0 oder 100? Den teil verstehe ich absolut nicht. Und auch nicht wieso die Objekte so lange NAmen haben und in grün sind.

                              Wenn du mir das noch ganz kurz erläutern würdest könnte ich das auch das 1. Kinderzimmer übernehmen.

                              CodierknechtC Online
                              CodierknechtC Online
                              Codierknecht
                              Developer Most Active
                              schrieb am zuletzt editiert von
                              #28

                              @mr-kan1ster sagte in Einfache Heizungsreglung:

                              Falls Ventil nicht den Wert 0 oder 100 hat, setze ihn auch 0 oder 100? Den teil verstehe ich absolut nicht. Und auch nicht wieso die Objekte so lange NAmen haben und in grün sind.

                              1. Es wird geprüft, ob überhaupt gesteuert werden muss oder nicht.
                                Wenn das Ventil bereits auf den benötigten Wert eingestellt ist, muss ja nix gesteuert werden.
                                Stichwort "Funkhygiene".
                              2. Ich gehe davon aus, dass @paul53 hier diesen Weg lediglich gewählt hat, weil er selbst diese DP nicht hat.
                                In die grünen Blöcke kann man schreiben was man will, ohne dass dieser DP existieren muss.
                                In der Realität kann man natürlich auch die üblichen blauen "Wert von" nehmen.

                              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                              HmIP|ZigBee|Tasmota|Unifi
                              Zabbix Certified Specialist
                              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                              MartinPM 1 Antwort Letzte Antwort
                              2
                              • CodierknechtC Codierknecht

                                @mr-kan1ster sagte in Einfache Heizungsreglung:

                                Falls Ventil nicht den Wert 0 oder 100 hat, setze ihn auch 0 oder 100? Den teil verstehe ich absolut nicht. Und auch nicht wieso die Objekte so lange NAmen haben und in grün sind.

                                1. Es wird geprüft, ob überhaupt gesteuert werden muss oder nicht.
                                  Wenn das Ventil bereits auf den benötigten Wert eingestellt ist, muss ja nix gesteuert werden.
                                  Stichwort "Funkhygiene".
                                2. Ich gehe davon aus, dass @paul53 hier diesen Weg lediglich gewählt hat, weil er selbst diese DP nicht hat.
                                  In die grünen Blöcke kann man schreiben was man will, ohne dass dieser DP existieren muss.
                                  In der Realität kann man natürlich auch die üblichen blauen "Wert von" nehmen.
                                MartinPM Online
                                MartinPM Online
                                MartinP
                                schrieb am zuletzt editiert von
                                #29

                                @codierknecht said in Einfache Heizungsreglung:

                                @mr-kan1ster sagte in Einfache Heizungsreglung:

                                Falls Ventil nicht den Wert 0 oder 100 hat, setze ihn auch 0 oder 100? Den teil verstehe ich absolut nicht. Und auch nicht wieso die Objekte so lange NAmen haben und in grün sind.

                                Es wird geprüft, ob überhaupt gesteuert werden muss oder nicht.
                                Wenn das Ventil bereits auf den benötigten Wert eingestellt ist, muss ja nix gesteuert werden.
                                Stichwort "Funkhygiene".

                                Das ist ja auch bei dem Code von @DJMarc75 die Intention gewesen - da wird die Verriegelung über eine Hilfsvariable gemacht

                                55d4e715-c6ee-461b-8263-bb6a18e93550-1700754495159-screenshot-2023-11-23-164707.png

                                Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                                Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                                Linux pve 6.17.9-1-pve
                                6 GByte RAM für den Container
                                Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                                Remote-Access über Wireguard der Fritzbox

                                1 Antwort Letzte Antwort
                                1
                                • DJMarc75D DJMarc75

                                  @pi-ter kuck mal :)
                                  Screenshot 2023-11-23 164707.png

                                  R Offline
                                  R Offline
                                  Rico Sander
                                  schrieb am zuletzt editiert von Rico Sander
                                  #30

                                  @djmarc75 @Codierknecht

                                  Aha, nach Verfolghung der Diskussion hier, ist der Groschen (jetzt Cent) gefallen.
                                  Es wird also zusätzlich zur akt. Temperatur noch geprüft, welchen Zustand der Heizlüfter hat. Wenn er z.B. bereits läuft, muss er somit nicht wieder mit "steuere..." angesprochen werden; bzw. muss nicht ständig "ausgeschaltet" werden, wenn die Temperatur hoch genug ist und er eh schon aus.

                                  Edit1 :
                                  Was spricht eigentlich dagegen, gleich auf den Zustand des DP (Relais für Hzg an/aus) zu prüfen? Was übersehe ich da vielleicht?

                                  Edit2:
                                  Dagegen könnte sprechen, dass bei jeder Temp.-Änderung der Wert des DP (Zustand des Relais für Hzg) abgefragt werden würde.

                                  Besten Dank.
                                  VG Peter

                                  Wenns nicht geht, wie man will
                                  - muss mans tun, wie man kann.
                                  MartinPM 1 Antwort Letzte Antwort
                                  0
                                  • R Rico Sander

                                    @djmarc75 @Codierknecht

                                    Aha, nach Verfolghung der Diskussion hier, ist der Groschen (jetzt Cent) gefallen.
                                    Es wird also zusätzlich zur akt. Temperatur noch geprüft, welchen Zustand der Heizlüfter hat. Wenn er z.B. bereits läuft, muss er somit nicht wieder mit "steuere..." angesprochen werden; bzw. muss nicht ständig "ausgeschaltet" werden, wenn die Temperatur hoch genug ist und er eh schon aus.

                                    Edit1 :
                                    Was spricht eigentlich dagegen, gleich auf den Zustand des DP (Relais für Hzg an/aus) zu prüfen? Was übersehe ich da vielleicht?

                                    Edit2:
                                    Dagegen könnte sprechen, dass bei jeder Temp.-Änderung der Wert des DP (Zustand des Relais für Hzg) abgefragt werden würde.

                                    Besten Dank.
                                    VG Peter

                                    MartinPM Online
                                    MartinPM Online
                                    MartinP
                                    schrieb am zuletzt editiert von
                                    #31

                                    @pi-ter Den Zustand des DP muss das Skript bei ioBroker anfragen - die lokale Variable ist ihm auf kurzem Dienstweg zugänglich ...
                                    Ich würde vermuten, ersteres ist mehr Aufwand, kann es aber nicht mit Sicherheit sagen...

                                    Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                                    Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                                    Linux pve 6.17.9-1-pve
                                    6 GByte RAM für den Container
                                    Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                                    Remote-Access über Wireguard der Fritzbox

                                    R 1 Antwort Letzte Antwort
                                    1
                                    • MartinPM MartinP

                                      @pi-ter Den Zustand des DP muss das Skript bei ioBroker anfragen - die lokale Variable ist ihm auf kurzem Dienstweg zugänglich ...
                                      Ich würde vermuten, ersteres ist mehr Aufwand, kann es aber nicht mit Sicherheit sagen...

                                      R Offline
                                      R Offline
                                      Rico Sander
                                      schrieb am zuletzt editiert von
                                      #32

                                      @martinp sagte in Einfache Heizungsreglung:

                                      @pi-ter Den Zustand des DP muss das Skript bei ioBroker anfragen - die lokale Variable ist ihm auf kurzem Dienstweg zugänglich ...
                                      Ich würde vermuten, ersteres ist mehr Aufwand, kann es aber nicht mit Sicherheit sagen...

                                      Ja, stimmt. Das ist das, was ich mit "DP abfragen" in Edit2 im Sinn hatte. Du hast es aber korrekter formuliert.
                                      Zeitlich gesehen dürfte der Zugriff auf die vordefinierte Variable effektiver sein, wenn gleich das in diesem Kontext vlt. eine untergeordnete Rolle spielt.

                                      Wieder was gelernt ;-)

                                      VG Peter

                                      Wenns nicht geht, wie man will
                                      - muss mans tun, wie man kann.
                                      MartinPM 1 Antwort Letzte Antwort
                                      0
                                      • R Rico Sander

                                        @martinp sagte in Einfache Heizungsreglung:

                                        @pi-ter Den Zustand des DP muss das Skript bei ioBroker anfragen - die lokale Variable ist ihm auf kurzem Dienstweg zugänglich ...
                                        Ich würde vermuten, ersteres ist mehr Aufwand, kann es aber nicht mit Sicherheit sagen...

                                        Ja, stimmt. Das ist das, was ich mit "DP abfragen" in Edit2 im Sinn hatte. Du hast es aber korrekter formuliert.
                                        Zeitlich gesehen dürfte der Zugriff auf die vordefinierte Variable effektiver sein, wenn gleich das in diesem Kontext vlt. eine untergeordnete Rolle spielt.

                                        Wieder was gelernt ;-)

                                        VG Peter

                                        MartinPM Online
                                        MartinPM Online
                                        MartinP
                                        schrieb am zuletzt editiert von
                                        #33

                                        @pi-ter Noch ein Gedanke zur Heizungsregelung per ioBroker: Damit wird der ioBroker zu einem Gerät mit "Missionskritischer" Zuverlässigkeit. Da habe ich mich noch nicht so ganz drangetraut, und lasse die Thermostat-Regelschleifen lokal auf einem kleinen ESP8266 rechnen. Wenn mal wirklich ein sehr strenger Frost kommt, und man ist tagelang nicht zu Hause, während der ioBroker einfriert, kann da viel kaputtgehen
                                        ioBroker ist bei mir bzgl Heizung nur für Protokollierung, Überwachung und Nachtabsenkung zuständig ...

                                        Hat sich aber im Nachhinein herausgestellt, dass die ESP8266 Hardware instabiler ist, als der ioBroker, und deshalb der ioBroker sehr viel zuverlässiger läuft, als der ESP8266...

                                        Intel(R) Celeron(R) CPU N3000 @ 1.04GHz 8G RAM 480G SSD
                                        Virtualization : unprivileged lxc container (debian 13) on Proxmox 9.1.5)
                                        Linux pve 6.17.9-1-pve
                                        6 GByte RAM für den Container
                                        Fritzbox 6591 FW 8.20 (Vodafone Leih-Box)
                                        Remote-Access über Wireguard der Fritzbox

                                        R 1 Antwort Letzte Antwort
                                        1
                                        • MartinPM MartinP

                                          @pi-ter Noch ein Gedanke zur Heizungsregelung per ioBroker: Damit wird der ioBroker zu einem Gerät mit "Missionskritischer" Zuverlässigkeit. Da habe ich mich noch nicht so ganz drangetraut, und lasse die Thermostat-Regelschleifen lokal auf einem kleinen ESP8266 rechnen. Wenn mal wirklich ein sehr strenger Frost kommt, und man ist tagelang nicht zu Hause, während der ioBroker einfriert, kann da viel kaputtgehen
                                          ioBroker ist bei mir bzgl Heizung nur für Protokollierung, Überwachung und Nachtabsenkung zuständig ...

                                          Hat sich aber im Nachhinein herausgestellt, dass die ESP8266 Hardware instabiler ist, als der ioBroker, und deshalb der ioBroker sehr viel zuverlässiger läuft, als der ESP8266...

                                          R Offline
                                          R Offline
                                          Rico Sander
                                          schrieb am zuletzt editiert von Rico Sander
                                          #34

                                          @martinp
                                          Die einzige "kritische Infrastruktur" wäre bei mir in der Tat nur das "Palmenhaus" (Umhausung für eine eingepflanzte Palme im Winter). Da die Palme nun ca. 40 Jahre alt ist, wäre es echt schade drum.
                                          Über Redundanz habe ich mir daher auch schon Gedanken gemacht, sie aber angesichts der eher milden Witterung noch nicht umgesetzt.

                                          Zur Temperaturmessung ist ein ESP8266 D1mini im Einsatz, geschaltet wird ein Sonoff TH16, auf dem noch die Originalsoftware läuft. Dort steckt auch der Temperaturfühler dran. Angebunden ist der TH16 an ioBroker über den HAM-Adapter und eweLink-Modul.

                                          Die Überlegung war, den TH-16 autonom als Thermostat einzusetzen und bei Unterschreitung einer zweiten Minimumtemperatur den Lüfter einzuschalten.

                                          Nächste Überlegung war: Was ist, wenn der kleine Heizlüfter den Geist aufgibt?
                                          Hier könnte ich über eine P11 mit Tasmota einen zweiten Heizlüfter in Reserve halten, der dann z.B. bei unter 2.5°C scriptgesteuert einspringt.

                                          Aber was immer wir auch tun: Ohne Stromnetz und ohne WLAN, WAN, what ever nutzt uns die ganze schöne Redundanz nix. Ohne Strom auch keine Heizung...

                                          Die einzige Sicherheit, die ich mir bei Abwesenheit noch gönne, ist ein VPN ins häusliche Netz. Da kann ich wenigstens nachsehen, ob alles passt und ggfls. aktiv werden - und zur Not die Nachbarn/Freunde alarmieren

                                          Bei mir läuft der raspi4 4GB mit ioBroker ebenfalls total stabil und ich würde auf den auch eher setzen, als auf die D1mini, was ich aber auch noch nie getestet habe ;-).

                                          Wenns nicht geht, wie man will
                                          - muss mans tun, wie man kann.
                                          MartinPM 1 Antwort Letzte Antwort
                                          0

                                          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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          579

                                          Online

                                          32.8k

                                          Benutzer

                                          82.8k

                                          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