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
    340

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

  • 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 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
        • R Rico Sander

          @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 ;-).

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

          @pi-ter said in Einfache Heizungsreglung:

          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 ;-).

          Damals war meine Überlegung, dass der D1 Mini oder ein ähnliches vorgelagertes Kästchen eh gebraucht wird, um die Thermosensoren, Ventile usw. anzusteuern/abzufragen.
          Wenn dann ohne den ioBroker nicht wenigstens ein Notbetrieb möglich ist, hat man keinen Single Point of Failure, sondern gleich zwei davon ;-)

          Der Thermostat ist aber per MQTT ansteuerbar - vielleicht braucht man auf irgendeinem alten Linux-PC einen "Not" ioBroker, wenn denn doch irgendwas geschrottet wird beim Rumbasteln mit dem "Haupt" ioBroker ...

          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
            #36

            @djmarc75

            Moin,
            gibt es einen Grund, warum Du im oberen Zweig Deines Blockly mit doppelter Negation arbeitest?
            Ich habe das mal nachempfunden und komme letztlich zum selben Ergebnis.
            In beiden Fällen funktioniert die UND-Verknüpfung von temperatur und Zustand heizung; der if-Zweig wird korrekt ausgewertet

            var temperatur, heizung;
            temperatur = 9;
            heizung = false;
            
            if (temperatur < 10 && !heizung) {
              window.alert('doppelte Verneinung');
            }
            
            if (temperatur < 10 && heizung == false) {
              window.alert('einfache abfrage');
            }
            

            Aber müsste Blockly nicht auch ein

            heizung === false
            

            generieren? Beide Werte sind ja von gleichem Typ

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

              @djmarc75

              Moin,
              gibt es einen Grund, warum Du im oberen Zweig Deines Blockly mit doppelter Negation arbeitest?
              Ich habe das mal nachempfunden und komme letztlich zum selben Ergebnis.
              In beiden Fällen funktioniert die UND-Verknüpfung von temperatur und Zustand heizung; der if-Zweig wird korrekt ausgewertet

              var temperatur, heizung;
              temperatur = 9;
              heizung = false;
              
              if (temperatur < 10 && !heizung) {
                window.alert('doppelte Verneinung');
              }
              
              if (temperatur < 10 && heizung == false) {
                window.alert('einfache abfrage');
              }
              

              Aber müsste Blockly nicht auch ein

              heizung === false
              

              generieren? Beide Werte sind ja von gleichem Typ

              DJMarc75D Offline
              DJMarc75D Offline
              DJMarc75
              schrieb am zuletzt editiert von
              #37

              @pi-ter Mit JS kenne ich mich leider absolut nicht aus, aber @paul53 hat ja schon geschrieben dass doppeltes "steuern" in meinem Skript viel Ressourcen braucht.

              Daher lieber so:

              Screenshot 2023-11-25 142135.png

              ;)

              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

              paul53P 1 Antwort Letzte Antwort
              0
              • CodierknechtC Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #38

                @pi-ter sagte in Einfache Heizungsreglung:

                doppelter Negation

                Hilf mir mal auf die Sprünge:
                Wo siehst Du da eine doppelte Negierung (Negation) ???

                Doppelpost?

                "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

                R 1 Antwort Letzte Antwort
                0
                • DJMarc75D DJMarc75

                  @pi-ter Mit JS kenne ich mich leider absolut nicht aus, aber @paul53 hat ja schon geschrieben dass doppeltes "steuern" in meinem Skript viel Ressourcen braucht.

                  Daher lieber so:

                  Screenshot 2023-11-25 142135.png

                  ;)

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

                  @djmarc75 sagte: lieber so:

                  Die beiden "und" sind überflüssig.

                  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

                  DJMarc75D 1 Antwort Letzte Antwort
                  1
                  • CodierknechtC Codierknecht

                    @pi-ter sagte in Einfache Heizungsreglung:

                    doppelter Negation

                    Hilf mir mal auf die Sprünge:
                    Wo siehst Du da eine doppelte Negierung (Negation) ???

                    Doppelpost?

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

                    @codierknecht
                    Doppelpost habe ich schon zum Löschen gemeldet.

                    Die Variable "heizung" ist zunächst auf "falsch" gesetzt.
                    "nicht heizung" heißt dann doch "nicht falsch" - also wahr.

                    Geprüft weden soll doch aber auf "heizung gleich falsch", damit die UND-Verknüpfung
                    "Temperatur zu gering && Heizung aus" zum Einschalten führt.

                    test2.png

                    && !heizung
                    

                    Wo ist da mein Denkfehler?

                    Wenns nicht geht, wie man will
                    - muss mans tun, wie man kann.
                    paul53P CodierknechtC 2 Antworten Letzte Antwort
                    0
                    • paul53P paul53

                      @djmarc75 sagte: lieber so:

                      Die beiden "und" sind überflüssig.

                      DJMarc75D Offline
                      DJMarc75D Offline
                      DJMarc75
                      schrieb am zuletzt editiert von
                      #41

                      @paul53 sagte in Einfache Heizungsreglung:

                      Die beiden "und" sind überflüssig

                      korrekt, wieder was gelernt 👍

                      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

                      1 Antwort Letzte Antwort
                      0
                      • R Rico Sander

                        @codierknecht
                        Doppelpost habe ich schon zum Löschen gemeldet.

                        Die Variable "heizung" ist zunächst auf "falsch" gesetzt.
                        "nicht heizung" heißt dann doch "nicht falsch" - also wahr.

                        Geprüft weden soll doch aber auf "heizung gleich falsch", damit die UND-Verknüpfung
                        "Temperatur zu gering && Heizung aus" zum Einschalten führt.

                        test2.png

                        && !heizung
                        

                        Wo ist da mein Denkfehler?

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

                        @pi-ter sagte: Geprüft weden soll doch aber auf "heizung gleich falsch"

                        "nicht heizung" entspricht "heizung gleich falsch".

                        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

                        R 1 Antwort Letzte Antwort
                        1
                        • paul53P paul53

                          @pi-ter sagte: Geprüft weden soll doch aber auf "heizung gleich falsch"

                          "nicht heizung" entspricht "heizung gleich falsch".

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

                          @paul53
                          Danke.

                          Gut, ich nehm das mal so hin, weil es wohl richtig ist. :-)
                          Das sieht dann aber für mich so aus, als wenn auf die Variable und nicht deren Wert geprüft wird.
                          Es erklärt dann aber zumindest, warum die wirkliche (?) Prüfung auf Wert - also "heizung === False" (Wert === false) auch funktioniert.

                          Ich komme aus der php-Ecke und ich bin mir nicht sicher, ob das da auch so gehen würde. JS war bislang nie so mein Ding.

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

                            @codierknecht
                            Doppelpost habe ich schon zum Löschen gemeldet.

                            Die Variable "heizung" ist zunächst auf "falsch" gesetzt.
                            "nicht heizung" heißt dann doch "nicht falsch" - also wahr.

                            Geprüft weden soll doch aber auf "heizung gleich falsch", damit die UND-Verknüpfung
                            "Temperatur zu gering && Heizung aus" zum Einschalten führt.

                            test2.png

                            && !heizung
                            

                            Wo ist da mein Denkfehler?

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

                            @pi-ter
                            Die "variable" wird beim Start des Script initialisiert.
                            Nach dem Start des Script ist sie zunächst "falsch" - da hast Du schon Recht.
                            Aber zur Laufzeit wird die ja auch mal "wahr". Dann wird damit unnötiges Senden verhindert.

                            "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

                            R 1 Antwort Letzte Antwort
                            0
                            • CodierknechtC Codierknecht

                              @pi-ter
                              Die "variable" wird beim Start des Script initialisiert.
                              Nach dem Start des Script ist sie zunächst "falsch" - da hast Du schon Recht.
                              Aber zur Laufzeit wird die ja auch mal "wahr". Dann wird damit unnötiges Senden verhindert.

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

                              @codierknecht Danke für Deine Mühe, aber das war ja gar nicht das Problem.

                              Hier nochmal das komplette Blockly:

                              test3.png

                              Die Wertzuweisung für die Variable "heizung"am Anfang ist klar.

                              Dann läuft das Script in die erste if-Abfrage.
                              Nur wenn beide Teilausdrücke - Temperatur <3.1, Wert der Variablen gleich "falsch" - "wahr" ergeben (UND-Verknüpfung), erfolgt die Steuerung des Relais.

                              Laut Blockly und auch im Code wird aber auf "nicht falsch" (!heizung) - also "wahr"geprüft.

                              if ((obj.state ? obj.state.val : "") < 3.1 && !heizung)
                              

                              Dass dann irgendwann die Variable auf "wahr" gesetzt wird, ist an dieser Stelle zunächst nicht relevant

                              Wo also mache ich hier einen Denkfehler? Mir erschließt sich dieses "nicht heizung" nicht. Aber vlt. ist das ja eine Besonderheit von Blockly.

                              Wenns nicht geht, wie man will
                              - muss mans tun, wie man kann.
                              paul53P CodierknechtC 2 Antworten Letzte Antwort
                              0
                              • R Rico Sander

                                @codierknecht Danke für Deine Mühe, aber das war ja gar nicht das Problem.

                                Hier nochmal das komplette Blockly:

                                test3.png

                                Die Wertzuweisung für die Variable "heizung"am Anfang ist klar.

                                Dann läuft das Script in die erste if-Abfrage.
                                Nur wenn beide Teilausdrücke - Temperatur <3.1, Wert der Variablen gleich "falsch" - "wahr" ergeben (UND-Verknüpfung), erfolgt die Steuerung des Relais.

                                Laut Blockly und auch im Code wird aber auf "nicht falsch" (!heizung) - also "wahr"geprüft.

                                if ((obj.state ? obj.state.val : "") < 3.1 && !heizung)
                                

                                Dass dann irgendwann die Variable auf "wahr" gesetzt wird, ist an dieser Stelle zunächst nicht relevant

                                Wo also mache ich hier einen Denkfehler? Mir erschließt sich dieses "nicht heizung" nicht. Aber vlt. ist das ja eine Besonderheit von Blockly.

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

                                @pi-ter sagte: Mir erschließt sich dieses "nicht heizung" nicht.

                                Der nicht-Operator (Ausrufezeichen) negiert den Wert: false wird true und true wird false.

                                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

                                R 1 Antwort Letzte Antwort
                                0
                                • R Rico Sander

                                  @codierknecht Danke für Deine Mühe, aber das war ja gar nicht das Problem.

                                  Hier nochmal das komplette Blockly:

                                  test3.png

                                  Die Wertzuweisung für die Variable "heizung"am Anfang ist klar.

                                  Dann läuft das Script in die erste if-Abfrage.
                                  Nur wenn beide Teilausdrücke - Temperatur <3.1, Wert der Variablen gleich "falsch" - "wahr" ergeben (UND-Verknüpfung), erfolgt die Steuerung des Relais.

                                  Laut Blockly und auch im Code wird aber auf "nicht falsch" (!heizung) - also "wahr"geprüft.

                                  if ((obj.state ? obj.state.val : "") < 3.1 && !heizung)
                                  

                                  Dass dann irgendwann die Variable auf "wahr" gesetzt wird, ist an dieser Stelle zunächst nicht relevant

                                  Wo also mache ich hier einen Denkfehler? Mir erschließt sich dieses "nicht heizung" nicht. Aber vlt. ist das ja eine Besonderheit von Blockly.

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

                                  @pi-ter
                                  "nicht heizung" ist semantisch das Gleiche wie "heizung = falsch".

                                  Wenn die variable "heizung" mal ein "wahr" enthält, wird der Ausdruck "nicht heizung" zu "falsch" und im ersten Block passiert ... nix.

                                  "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

                                  R 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @pi-ter sagte: Mir erschließt sich dieses "nicht heizung" nicht.

                                    Der nicht-Operator (Ausrufezeichen) negiert den Wert: false wird true und true wird false.

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

                                    @paul53 sagte in Einfache Heizungsreglung:

                                    @pi-ter sagte: Mir erschließt sich dieses "nicht heizung" nicht.

                                    Der nicht-Operator (Ausrufezeichen) negiert den Wert: false wird true und true wird false.

                                    Naja, das weiß ich. Durch php bin ich ja nicht ganz unbewandert in diesen Dingen. Immerhin läuft mein selbstgestricktes Blog schon seit Jahren.

                                    Aber genau das ist ja mein Problem :-)
                                    Wenn der Wert der Variablen "falsch" ist, und ich prüfen will ob "heizung" diesen Wert hat, wieso negiere ich dann die Abfrage?
                                    Wäre dann nicht if ( heizung === falsch) { tue was; } die richtige Wahl?

                                    Was übershe ich?

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

                                      @pi-ter
                                      "nicht heizung" ist semantisch das Gleiche wie "heizung = falsch".

                                      Wenn die variable "heizung" mal ein "wahr" enthält, wird der Ausdruck "nicht heizung" zu "falsch" und im ersten Block passiert ... nix.

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

                                      @codierknecht sagte in Einfache Heizungsreglung:

                                      @pi-ter
                                      "nicht heizung" ist semantisch das Gleiche wie "heizung = falsch".

                                      Und dann ist "heizung" das Gleiche wie "heizung =wahr"?
                                      Dann ist die Zuweisung am Scriptanfang falsch:

                                      heizung = falsch;
                                      

                                      Wenn die variable "heizung" mal ein "wahr" enthält, wird der Ausdruck "nicht heizung" zu "falsch" und im ersten Block passiert ... nix.

                                      Ähm, also im ersten if-Zweig wird geprüft, ob die Variable den Wert "falsch" hat. An dieser Stelle ist ein "wahr" noch nicht in Sicht und darauf wird im ersten Zweig auch nicht geprüft.

                                      Ausdruck "nicht heizung" zu "falsch" und im ersten Block passiert ... nix.

                                      Das wäre aber ziemlich blöd. Die Heizung würde nicht eingeschaltet.

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

                                        @codierknecht sagte in Einfache Heizungsreglung:

                                        @pi-ter
                                        "nicht heizung" ist semantisch das Gleiche wie "heizung = falsch".

                                        Und dann ist "heizung" das Gleiche wie "heizung =wahr"?
                                        Dann ist die Zuweisung am Scriptanfang falsch:

                                        heizung = falsch;
                                        

                                        Wenn die variable "heizung" mal ein "wahr" enthält, wird der Ausdruck "nicht heizung" zu "falsch" und im ersten Block passiert ... nix.

                                        Ähm, also im ersten if-Zweig wird geprüft, ob die Variable den Wert "falsch" hat. An dieser Stelle ist ein "wahr" noch nicht in Sicht und darauf wird im ersten Zweig auch nicht geprüft.

                                        Ausdruck "nicht heizung" zu "falsch" und im ersten Block passiert ... nix.

                                        Das wäre aber ziemlich blöd. Die Heizung würde nicht eingeschaltet.

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

                                        @pi-ter
                                        Du musst da zwei Dinge unterscheiden:
                                        Die erste Zuweisung passiert ja nur 1x - beim Start des Script.
                                        Damit wird die Variable einfach nur auf einen definierten Startwert gesetzt.

                                        Das mit "im ersten Block passiert ... nix" habe ich vielleicht etwas unglücklich formuliert.
                                        Es passiert dann nix, wenn dieser Block zum zweiten (oder weiteren) Mal erreicht wird. Wenn also der Trigger bereits einmal ausgelöst hat. Deswegen heißt das Ding ja auch "Sperrvariable".
                                        Darum wird die auch beim Start auf "false" gesetzt.

                                        Vielleicht würde ein anderer Name das klarer machen: "heizungIstAn".

                                        "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

                                        R 1 Antwort Letzte Antwort
                                        0
                                        • CodierknechtC Codierknecht

                                          @pi-ter
                                          Du musst da zwei Dinge unterscheiden:
                                          Die erste Zuweisung passiert ja nur 1x - beim Start des Script.
                                          Damit wird die Variable einfach nur auf einen definierten Startwert gesetzt.

                                          Das mit "im ersten Block passiert ... nix" habe ich vielleicht etwas unglücklich formuliert.
                                          Es passiert dann nix, wenn dieser Block zum zweiten (oder weiteren) Mal erreicht wird. Wenn also der Trigger bereits einmal ausgelöst hat. Deswegen heißt das Ding ja auch "Sperrvariable".
                                          Darum wird die auch beim Start auf "false" gesetzt.

                                          Vielleicht würde ein anderer Name das klarer machen: "heizungIstAn".

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

                                          @codierknecht
                                          Ist schon spät, daher nur kurz. Zunächst danke für feedback. Aber:

                                          Bitte, über wirklich simple Dinge wie die einmalige Initialisierung der Variablen müssen wir nun wirklich nicht reden. Seit 2004 beschäftigte ich mich erst mit perl, jetzt mit php. Ich bin also in einer ganzen Reihe von Basics wirklich einigermaßen fit. Was nicht heißen soll, dass ich alles weiß und über den Dingen stehe.

                                          Dass ich gerade in JS etliche Wissenlücken habe, weiß ich selbst. Aber der Umgang mit Variablen, Operatoren und all der anderen Logik, die in Programmen und Programmabläufen steckt ist nicht ganz neu für mich. Und ich merke immer mehr, dass sich JS nicht soo doll von php unterscheidet.

                                          Es passiert dann nix, wenn dieser Block zum zweiten (oder weiteren) Mal erreicht wird. Wenn also der Trigger bereits einmal ausgelöst hat. Deswegen heißt das Ding ja auch "Sperrvariable".

                                          Siehe oben. Das ist mir doch alles bekannt. Aber auf die Frage, wieso mit "nicht heizung" abgefragt wird, habe ich noch keine nachvollziehbare Antwort erhalten. Das ist für mich das Unklare. Es ist für mich unlogisch.
                                          Und dieses Problem, was ich doch eigentlich sehr deutlich skizziert habe, wird erstaunlicherweise von allen umschifft :-)

                                          BTW: Diese Hzg.-Regelung hat aber noch ganz andere Schönheitsfehler. Aber da bin ich noch dran.

                                          Einen schönen Wochenanfang Euch allen...

                                          VG
                                          Peter

                                          Wenns nicht geht, wie man will
                                          - muss mans tun, wie man kann.
                                          CodierknechtC 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

                                          554

                                          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