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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Zeitverzögerte Reaktion / Hysterese

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Zeitverzögerte Reaktion / Hysterese

Geplant Angeheftet Gesperrt Verschoben Node-Red
18 Beiträge 2 Kommentatoren 1.6k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    Segelfreak
    schrieb am zuletzt editiert von
    #1

    Moin zusammen.

    Ich habe nun meine ersten Gehversuche mit node-red gemacht und zwei Thermostaten zusammengeklickt. Ich bin da in der Hinsicht also noch ein ziemlicher noob, bitte berücksichtigen :-)

    Den Code habe ich hier unten einmal einkopiert.

    Eigentlich ist alles ganz simpel. Mit dem Yahka Adapter wird die Zieltemperatur eingestellt und entsprechend der Hysterese-Parameter schaltet dann ein Shelly-Switch das Ventil der Fußbodenheizung in dem Segment. Das funktioniert wunderbar.
    Aber...
    Was mir auffällt ist, dass teils das Schaltsignal an das Ventil zeitlich versetzt erfolgt, wie man hier an der Grafik gut erkennen kann.

    Die Solltemperatur (grün durchgezogene Linie) wird z.B. hochgesetzt, die Ist-Temperatur (blau) ist auch unterhalb des Trigger-Punktes und doch braucht es scheinbar erst noch eine minimale Änderung der Ist-Temperatur bevor dann letztlich das Ventil (grün gestrichelt) geschaltet wird.
    Es scheint fast so, als ob es erst einer Änderung der Ist-Temperatur braucht, um den Flow zu starten. Nur die Änderung der Soll-Temperatur scheint das nicht auszulösen.

    Kann das sein? Und falls ja, wo liegt mein Fehler?

    Bildschirm­foto 2022-12-06 um 18.09.50.png

    Bildschirm­foto 2022-12-06 um 18.13.27.png

    [
        {
            "id": "c15739604c5db9bd",
            "type": "tab",
            "label": "Thermostat Küche",
            "disabled": false,
            "info": "",
            "env": []
        },
        {
            "id": "b671106c372bbddf",
            "type": "ioBroker in",
            "z": "c15739604c5db9bd",
            "name": "d1mini_2/DHT22/Temperature",
            "topic": "mqtt.0.d1mini_2.DHT22.Temperature",
            "payloadType": "value",
            "onlyack": "",
            "func": "all",
            "gap": "",
            "fireOnStart": "true",
            "outFormat": "ioBroker",
            "x": 140,
            "y": 160,
            "wires": [
                [
                    "24e77fad6b110ef8"
                ]
            ]
        },
        {
            "id": "dbdd083d11f3e043",
            "type": "ioBroker in",
            "z": "c15739604c5db9bd",
            "name": "Zieltemperatur",
            "topic": "0_userdata.0.Thermostat_Küche.Zieltemperatur",
            "payloadType": "value",
            "onlyack": "",
            "func": "all",
            "gap": "",
            "fireOnStart": "true",
            "outFormat": "ioBroker",
            "x": 140,
            "y": 220,
            "wires": [
                [
                    "24e77fad6b110ef8"
                ]
            ]
        },
        {
            "id": "24e77fad6b110ef8",
            "type": "hysteresis",
            "z": "c15739604c5db9bd",
            "name": "Hysterese",
            "ThresholdType": "dynamic",
            "ThresholdRising": "",
            "ThresholdFalling": "",
            "TopicThreshold": "0_userdata.0.Thermostat_Küche.Zieltemperatur",
            "TopicCurrent": "mqtt.0.d1mini_2.DHT22.Temperature",
            "ThresholdDeltaRising": "0.2",
            "ThresholdDeltaFalling": "0.2",
            "InitialMessage": true,
            "OutRisingType": "bool",
            "OutRisingValue": "false",
            "OutFallingType": "bool",
            "OutFallingValue": "true",
            "OutTopicType": "str",
            "OutTopicValue": "Switch",
            "DynRaiseError": true,
            "x": 360,
            "y": 160,
            "wires": [
                [
                    "891d48c1fbf563fe"
                ]
            ]
        },
        {
            "id": "891d48c1fbf563fe",
            "type": "ioBroker out",
            "z": "c15739604c5db9bd",
            "name": "Switch",
            "topic": "shelly.0.shellyplus1#7c87ce6434c0#1.Relay0.Switch",
            "ack": "false",
            "autoCreate": "false",
            "stateName": "",
            "role": "",
            "payloadType": "",
            "readonly": "",
            "stateUnit": "",
            "stateMin": "",
            "stateMax": "",
            "x": 550,
            "y": 240,
            "wires": []
        }
    ]
    
    mickymM 1 Antwort Letzte Antwort
    0
    • S Segelfreak

      Moin zusammen.

      Ich habe nun meine ersten Gehversuche mit node-red gemacht und zwei Thermostaten zusammengeklickt. Ich bin da in der Hinsicht also noch ein ziemlicher noob, bitte berücksichtigen :-)

      Den Code habe ich hier unten einmal einkopiert.

      Eigentlich ist alles ganz simpel. Mit dem Yahka Adapter wird die Zieltemperatur eingestellt und entsprechend der Hysterese-Parameter schaltet dann ein Shelly-Switch das Ventil der Fußbodenheizung in dem Segment. Das funktioniert wunderbar.
      Aber...
      Was mir auffällt ist, dass teils das Schaltsignal an das Ventil zeitlich versetzt erfolgt, wie man hier an der Grafik gut erkennen kann.

      Die Solltemperatur (grün durchgezogene Linie) wird z.B. hochgesetzt, die Ist-Temperatur (blau) ist auch unterhalb des Trigger-Punktes und doch braucht es scheinbar erst noch eine minimale Änderung der Ist-Temperatur bevor dann letztlich das Ventil (grün gestrichelt) geschaltet wird.
      Es scheint fast so, als ob es erst einer Änderung der Ist-Temperatur braucht, um den Flow zu starten. Nur die Änderung der Soll-Temperatur scheint das nicht auszulösen.

      Kann das sein? Und falls ja, wo liegt mein Fehler?

      Bildschirm­foto 2022-12-06 um 18.09.50.png

      Bildschirm­foto 2022-12-06 um 18.13.27.png

      [
          {
              "id": "c15739604c5db9bd",
              "type": "tab",
              "label": "Thermostat Küche",
              "disabled": false,
              "info": "",
              "env": []
          },
          {
              "id": "b671106c372bbddf",
              "type": "ioBroker in",
              "z": "c15739604c5db9bd",
              "name": "d1mini_2/DHT22/Temperature",
              "topic": "mqtt.0.d1mini_2.DHT22.Temperature",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "true",
              "outFormat": "ioBroker",
              "x": 140,
              "y": 160,
              "wires": [
                  [
                      "24e77fad6b110ef8"
                  ]
              ]
          },
          {
              "id": "dbdd083d11f3e043",
              "type": "ioBroker in",
              "z": "c15739604c5db9bd",
              "name": "Zieltemperatur",
              "topic": "0_userdata.0.Thermostat_Küche.Zieltemperatur",
              "payloadType": "value",
              "onlyack": "",
              "func": "all",
              "gap": "",
              "fireOnStart": "true",
              "outFormat": "ioBroker",
              "x": 140,
              "y": 220,
              "wires": [
                  [
                      "24e77fad6b110ef8"
                  ]
              ]
          },
          {
              "id": "24e77fad6b110ef8",
              "type": "hysteresis",
              "z": "c15739604c5db9bd",
              "name": "Hysterese",
              "ThresholdType": "dynamic",
              "ThresholdRising": "",
              "ThresholdFalling": "",
              "TopicThreshold": "0_userdata.0.Thermostat_Küche.Zieltemperatur",
              "TopicCurrent": "mqtt.0.d1mini_2.DHT22.Temperature",
              "ThresholdDeltaRising": "0.2",
              "ThresholdDeltaFalling": "0.2",
              "InitialMessage": true,
              "OutRisingType": "bool",
              "OutRisingValue": "false",
              "OutFallingType": "bool",
              "OutFallingValue": "true",
              "OutTopicType": "str",
              "OutTopicValue": "Switch",
              "DynRaiseError": true,
              "x": 360,
              "y": 160,
              "wires": [
                  [
                      "891d48c1fbf563fe"
                  ]
              ]
          },
          {
              "id": "891d48c1fbf563fe",
              "type": "ioBroker out",
              "z": "c15739604c5db9bd",
              "name": "Switch",
              "topic": "shelly.0.shellyplus1#7c87ce6434c0#1.Relay0.Switch",
              "ack": "false",
              "autoCreate": "false",
              "stateName": "",
              "role": "",
              "payloadType": "",
              "readonly": "",
              "stateUnit": "",
              "stateMin": "",
              "stateMax": "",
              "x": 550,
              "y": 240,
              "wires": []
          }
      ]
      
      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von
      #2

      @segelfreak Ich bin zwar kein Freund von diesen fertigen Nodes (insbesondere wenn es easy ist, dass mit den Standardnodes zu implementieren) - aber im Prinzip ist das ja richtig, dass erst ein neues trigger der IST-Temperatur zu einem erneuten Abgleich führt und dann mit den veränderten Parametern geschaltet wird. Insofern ist das in meinen Augen völlig korrekt. Wenn Du nicht warten möchtest bis eine neue IST-Temperatur gemeldet wird, dann musst Du halt die IST-Temperatur selbst triggern. Kannst noch eine Trigger Node dazwischen klemmen.

      Aber ansonsten ist es halt so, dass man solche Nodes nicht braucht sondern selbst eine Hysterese Flow macht und kontrolliert wann was geschaltet wird. Da reichen die Standardmittel von NodeRed. Wenn man es selbst macht, dann liest man halt die IST-Temperatur selbst aus, wenn man den Soll verändert.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      S 1 Antwort Letzte Antwort
      0
      • mickymM mickym

        @segelfreak Ich bin zwar kein Freund von diesen fertigen Nodes (insbesondere wenn es easy ist, dass mit den Standardnodes zu implementieren) - aber im Prinzip ist das ja richtig, dass erst ein neues trigger der IST-Temperatur zu einem erneuten Abgleich führt und dann mit den veränderten Parametern geschaltet wird. Insofern ist das in meinen Augen völlig korrekt. Wenn Du nicht warten möchtest bis eine neue IST-Temperatur gemeldet wird, dann musst Du halt die IST-Temperatur selbst triggern. Kannst noch eine Trigger Node dazwischen klemmen.

        Aber ansonsten ist es halt so, dass man solche Nodes nicht braucht sondern selbst eine Hysterese Flow macht und kontrolliert wann was geschaltet wird. Da reichen die Standardmittel von NodeRed. Wenn man es selbst macht, dann liest man halt die IST-Temperatur selbst aus, wenn man den Soll verändert.

        S Offline
        S Offline
        Segelfreak
        schrieb am zuletzt editiert von
        #3

        @mickym danke für die Rückmeldung!!! Ich hatte erwartet, dass auch eine Änderung der Solltemperatur eigentlich einen Abgleich auslösen sollte. Liegt das an dem fertigen Node? Denn die Fußbodenheizung ist träge, braucht mithin 3 Stunden um sich anzupassen. Heißt: eine Änderung der Ist-Temperatur wird eigentlich nur durch „externe Schocks“ ausgelöst, wie eine Tür oder ein Fenster. Was wäre die Lösung aus deiner Sicht?

        mickymM 1 Antwort Letzte Antwort
        0
        • S Segelfreak

          @mickym danke für die Rückmeldung!!! Ich hatte erwartet, dass auch eine Änderung der Solltemperatur eigentlich einen Abgleich auslösen sollte. Liegt das an dem fertigen Node? Denn die Fußbodenheizung ist träge, braucht mithin 3 Stunden um sich anzupassen. Heißt: eine Änderung der Ist-Temperatur wird eigentlich nur durch „externe Schocks“ ausgelöst, wie eine Tür oder ein Fenster. Was wäre die Lösung aus deiner Sicht?

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #4

          Wie gesagt, wenn es funktioniert ist es einfach mit solchen Nodes. Dann holst Du beim Verstellen Deiner Zieltemperatur nochmal die IST Temperature mit einer GET Node. Ich gehe mal davon aus, dass die Hysterese Node dann reagiert.

          Ich gehe mal davon aus, dass die Hysterese Node anhand des topics unterscheidet, was ist und was soll Temperatur ist. Zeig halt mal, wie Du Deine Hysterese Node konfiguriert hast.

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          S 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            Wie gesagt, wenn es funktioniert ist es einfach mit solchen Nodes. Dann holst Du beim Verstellen Deiner Zieltemperatur nochmal die IST Temperature mit einer GET Node. Ich gehe mal davon aus, dass die Hysterese Node dann reagiert.

            Ich gehe mal davon aus, dass die Hysterese Node anhand des topics unterscheidet, was ist und was soll Temperatur ist. Zeig halt mal, wie Du Deine Hysterese Node konfiguriert hast.

            S Offline
            S Offline
            Segelfreak
            schrieb am zuletzt editiert von Segelfreak
            #5

            @mickym so sieht es aktuell aus... viel ist da nicht einzustellen :-)

            Bildschirm­foto 2022-12-06 um 21.14.20.png Bildschirm­foto 2022-12-06 um 21.14.27.png

            mickymM 1 Antwort Letzte Antwort
            0
            • S Segelfreak

              @mickym so sieht es aktuell aus... viel ist da nicht einzustellen :-)

              Bildschirm­foto 2022-12-06 um 21.14.20.png Bildschirm­foto 2022-12-06 um 21.14.27.png

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von
              #6

              @segelfreak Ja wie ich vermutet habe. Dann versuche ich das mal mit Standardmitteln zu erstellen. ;)

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              S 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @segelfreak Ja wie ich vermutet habe. Dann versuche ich das mal mit Standardmitteln zu erstellen. ;)

                S Offline
                S Offline
                Segelfreak
                schrieb am zuletzt editiert von
                #7

                @mickym ach, das wäre cool! Danke!

                S 1 Antwort Letzte Antwort
                0
                • S Segelfreak

                  @mickym ach, das wäre cool! Danke!

                  S Offline
                  S Offline
                  Segelfreak
                  schrieb am zuletzt editiert von
                  #8

                  hier sieht man auch, dass es dann echt zu fehlerhaften Zuständen führt!
                  Die Soll-Temp ist 18°C, die Ist-Temp 21. Trotzdem bleibt der Schalter aktiv, weil der Node nicht aktualisiert.

                  Bildschirm­foto 2022-12-06 um 21.20.28.png

                  mickymM 1 Antwort Letzte Antwort
                  0
                  • S Segelfreak

                    hier sieht man auch, dass es dann echt zu fehlerhaften Zuständen führt!
                    Die Soll-Temp ist 18°C, die Ist-Temp 21. Trotzdem bleibt der Schalter aktiv, weil der Node nicht aktualisiert.

                    Bildschirm­foto 2022-12-06 um 21.20.28.png

                    mickymM Online
                    mickymM Online
                    mickym
                    Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @segelfreak So hier das ganze mit "Hausmitteln"

                    f6cdeaac-b69a-44b1-a81b-217fcf293153-image.png

                    Musst halt statt den Inject Nodes die entsprechenden iobroker-IN Nodes eingeben und hinten statt oder zustätzlich zur Debug Node den iobroker-Out Node.

                    Hier der Flow:

                    [
                       {
                           "id": "7d275e7f6a37d1b7",
                           "type": "inject",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "props": [
                               {
                                   "p": "payload"
                               },
                               {
                                   "p": "topic",
                                   "vt": "str"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "SOLL",
                           "payload": "19",
                           "payloadType": "num",
                           "x": 3020,
                           "y": 2020,
                           "wires": [
                               [
                                   "fb4dcbbcdc1835b6"
                               ]
                           ]
                       },
                       {
                           "id": "5e6ad4295bc56958",
                           "type": "inject",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "props": [
                               {
                                   "p": "payload"
                               },
                               {
                                   "p": "topic",
                                   "vt": "str"
                               }
                           ],
                           "repeat": "",
                           "crontab": "",
                           "once": false,
                           "onceDelay": 0.1,
                           "topic": "IST",
                           "payload": "18.7",
                           "payloadType": "num",
                           "x": 3020,
                           "y": 1960,
                           "wires": [
                               [
                                   "3a8f5535f0d9bd36"
                               ]
                           ]
                       },
                       {
                           "id": "f22abc09d4bef2a5",
                           "type": "switch",
                           "z": "289f539dcc33814e",
                           "name": "",
                           "property": "sollTemperatur",
                           "propertyType": "flow",
                           "rules": [
                               {
                                   "t": "lt",
                                   "v": "payload - 0.2",
                                   "vt": "jsonata"
                               },
                               {
                                   "t": "gt",
                                   "v": "payload + 0.2",
                                   "vt": "jsonata"
                               }
                           ],
                           "checkall": "true",
                           "repair": false,
                           "outputs": 2,
                           "x": 3470,
                           "y": 1980,
                           "wires": [
                               [
                                   "adee782f4c9fa56d"
                               ],
                               [
                                   "8fcace1a78975abe"
                               ]
                           ]
                       },
                       {
                           "id": "8fcace1a78975abe",
                           "type": "change",
                           "z": "289f539dcc33814e",
                           "name": "setze true - EIN",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "true",
                                   "tot": "bool"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 3640,
                           "y": 2020,
                           "wires": [
                               [
                                   "8f22299d04cfd002"
                               ]
                           ]
                       },
                       {
                           "id": "adee782f4c9fa56d",
                           "type": "change",
                           "z": "289f539dcc33814e",
                           "name": "setze false - AUS",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "false",
                                   "tot": "bool"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 3650,
                           "y": 1940,
                           "wires": [
                               [
                                   "8f22299d04cfd002"
                               ]
                           ]
                       },
                       {
                           "id": "fb4dcbbcdc1835b6",
                           "type": "change",
                           "z": "289f539dcc33814e",
                           "name": "Speichere SOLL, setze IST",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "sollTemperatur",
                                   "pt": "flow",
                                   "to": "payload",
                                   "tot": "msg"
                               },
                               {
                                   "t": "set",
                                   "p": "payload",
                                   "pt": "msg",
                                   "to": "istTemperatur",
                                   "tot": "flow"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 3240,
                           "y": 2020,
                           "wires": [
                               [
                                   "f22abc09d4bef2a5"
                               ]
                           ]
                       },
                       {
                           "id": "3a8f5535f0d9bd36",
                           "type": "change",
                           "z": "289f539dcc33814e",
                           "name": "Speichere IST",
                           "rules": [
                               {
                                   "t": "set",
                                   "p": "istTemperatur",
                                   "pt": "flow",
                                   "to": "payload",
                                   "tot": "msg"
                               }
                           ],
                           "action": "",
                           "property": "",
                           "from": "",
                           "to": "",
                           "reg": false,
                           "x": 3200,
                           "y": 1960,
                           "wires": [
                               [
                                   "f22abc09d4bef2a5"
                               ]
                           ]
                       },
                       {
                           "id": "8f22299d04cfd002",
                           "type": "debug",
                           "z": "289f539dcc33814e",
                           "name": "Ergebnis",
                           "active": true,
                           "tosidebar": true,
                           "console": false,
                           "tostatus": false,
                           "complete": "payload",
                           "targetType": "msg",
                           "statusVal": "",
                           "statusType": "auto",
                           "x": 3860,
                           "y": 1980,
                           "wires": []
                       }
                    ]
                    

                    Beide Temperaturen werden im Flow-Kontext gespeichert.

                    Wenn die Soll-Temperatur gesetzt wird, wird diese im Kontext gespeichert, aber die IST-Temperatur gesetzt, die IST-Temperatur speichert im Flow Kontext.

                    aec24514-2afd-49b6-9a71-987d839a8d5a-image.png

                    Die Hysterese machst Du dann in der switch Node:

                    918f6f82-f9ca-4dac-a24c-f23b98513658-image.png

                    die Payload enthält also IMMER die IST-Temperatur und wird mit der flow Kontext sollTemperatur verglichen.

                    Nehmen wir also an die SOLLTEMPERATUR ist 20°C, dann werden folgende Vergleiche gemacht.

                    Wenn IST-Temperatur: 19.7 dann macht die Switch Node folgendes:

                    1. Regel
                      20 < 19.7 - 0.2 = 20 < 19.5 => falsch
                    2. Regel
                      20 > 19.7 + 0.2 = 20 > 19.7 => wahr

                    ==> also unterer Ausgang - Heizung einschalten

                    Wenn IST-Temperatur: 19.9 dann macht die Switch Node folgendes:

                    1. Regel
                      20 < 19.9 - 0.2 = 20 < 19.7 => falsch
                    2. Regel
                      20 > 19.9 + 0.2 = 20 > 20.1 => falsch

                    ==> keine Regel passt, also passiert nichts.

                    Wenn IST-Temperatur: 20.3 dann macht die Switch Node folgendes:

                    1. Regel
                      20 < 20.3 - 0.2 = 20 < 20.1 => wahr
                    2. Regel
                      20 > 20.3 + 0.2 = 20 > 20.5 => falsch

                    ==> also oberer Ausgang - Heizung ausschalten

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    S 1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      @segelfreak So hier das ganze mit "Hausmitteln"

                      f6cdeaac-b69a-44b1-a81b-217fcf293153-image.png

                      Musst halt statt den Inject Nodes die entsprechenden iobroker-IN Nodes eingeben und hinten statt oder zustätzlich zur Debug Node den iobroker-Out Node.

                      Hier der Flow:

                      [
                         {
                             "id": "7d275e7f6a37d1b7",
                             "type": "inject",
                             "z": "289f539dcc33814e",
                             "name": "",
                             "props": [
                                 {
                                     "p": "payload"
                                 },
                                 {
                                     "p": "topic",
                                     "vt": "str"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "SOLL",
                             "payload": "19",
                             "payloadType": "num",
                             "x": 3020,
                             "y": 2020,
                             "wires": [
                                 [
                                     "fb4dcbbcdc1835b6"
                                 ]
                             ]
                         },
                         {
                             "id": "5e6ad4295bc56958",
                             "type": "inject",
                             "z": "289f539dcc33814e",
                             "name": "",
                             "props": [
                                 {
                                     "p": "payload"
                                 },
                                 {
                                     "p": "topic",
                                     "vt": "str"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "IST",
                             "payload": "18.7",
                             "payloadType": "num",
                             "x": 3020,
                             "y": 1960,
                             "wires": [
                                 [
                                     "3a8f5535f0d9bd36"
                                 ]
                             ]
                         },
                         {
                             "id": "f22abc09d4bef2a5",
                             "type": "switch",
                             "z": "289f539dcc33814e",
                             "name": "",
                             "property": "sollTemperatur",
                             "propertyType": "flow",
                             "rules": [
                                 {
                                     "t": "lt",
                                     "v": "payload - 0.2",
                                     "vt": "jsonata"
                                 },
                                 {
                                     "t": "gt",
                                     "v": "payload + 0.2",
                                     "vt": "jsonata"
                                 }
                             ],
                             "checkall": "true",
                             "repair": false,
                             "outputs": 2,
                             "x": 3470,
                             "y": 1980,
                             "wires": [
                                 [
                                     "adee782f4c9fa56d"
                                 ],
                                 [
                                     "8fcace1a78975abe"
                                 ]
                             ]
                         },
                         {
                             "id": "8fcace1a78975abe",
                             "type": "change",
                             "z": "289f539dcc33814e",
                             "name": "setze true - EIN",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "true",
                                     "tot": "bool"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 3640,
                             "y": 2020,
                             "wires": [
                                 [
                                     "8f22299d04cfd002"
                                 ]
                             ]
                         },
                         {
                             "id": "adee782f4c9fa56d",
                             "type": "change",
                             "z": "289f539dcc33814e",
                             "name": "setze false - AUS",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "false",
                                     "tot": "bool"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 3650,
                             "y": 1940,
                             "wires": [
                                 [
                                     "8f22299d04cfd002"
                                 ]
                             ]
                         },
                         {
                             "id": "fb4dcbbcdc1835b6",
                             "type": "change",
                             "z": "289f539dcc33814e",
                             "name": "Speichere SOLL, setze IST",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "sollTemperatur",
                                     "pt": "flow",
                                     "to": "payload",
                                     "tot": "msg"
                                 },
                                 {
                                     "t": "set",
                                     "p": "payload",
                                     "pt": "msg",
                                     "to": "istTemperatur",
                                     "tot": "flow"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 3240,
                             "y": 2020,
                             "wires": [
                                 [
                                     "f22abc09d4bef2a5"
                                 ]
                             ]
                         },
                         {
                             "id": "3a8f5535f0d9bd36",
                             "type": "change",
                             "z": "289f539dcc33814e",
                             "name": "Speichere IST",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "istTemperatur",
                                     "pt": "flow",
                                     "to": "payload",
                                     "tot": "msg"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 3200,
                             "y": 1960,
                             "wires": [
                                 [
                                     "f22abc09d4bef2a5"
                                 ]
                             ]
                         },
                         {
                             "id": "8f22299d04cfd002",
                             "type": "debug",
                             "z": "289f539dcc33814e",
                             "name": "Ergebnis",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "payload",
                             "targetType": "msg",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 3860,
                             "y": 1980,
                             "wires": []
                         }
                      ]
                      

                      Beide Temperaturen werden im Flow-Kontext gespeichert.

                      Wenn die Soll-Temperatur gesetzt wird, wird diese im Kontext gespeichert, aber die IST-Temperatur gesetzt, die IST-Temperatur speichert im Flow Kontext.

                      aec24514-2afd-49b6-9a71-987d839a8d5a-image.png

                      Die Hysterese machst Du dann in der switch Node:

                      918f6f82-f9ca-4dac-a24c-f23b98513658-image.png

                      die Payload enthält also IMMER die IST-Temperatur und wird mit der flow Kontext sollTemperatur verglichen.

                      Nehmen wir also an die SOLLTEMPERATUR ist 20°C, dann werden folgende Vergleiche gemacht.

                      Wenn IST-Temperatur: 19.7 dann macht die Switch Node folgendes:

                      1. Regel
                        20 < 19.7 - 0.2 = 20 < 19.5 => falsch
                      2. Regel
                        20 > 19.7 + 0.2 = 20 > 19.7 => wahr

                      ==> also unterer Ausgang - Heizung einschalten

                      Wenn IST-Temperatur: 19.9 dann macht die Switch Node folgendes:

                      1. Regel
                        20 < 19.9 - 0.2 = 20 < 19.7 => falsch
                      2. Regel
                        20 > 19.9 + 0.2 = 20 > 20.1 => falsch

                      ==> keine Regel passt, also passiert nichts.

                      Wenn IST-Temperatur: 20.3 dann macht die Switch Node folgendes:

                      1. Regel
                        20 < 20.3 - 0.2 = 20 < 20.1 => wahr
                      2. Regel
                        20 > 20.3 + 0.2 = 20 > 20.5 => falsch

                      ==> also oberer Ausgang - Heizung ausschalten

                      S Offline
                      S Offline
                      Segelfreak
                      schrieb am zuletzt editiert von
                      #10

                      @mickym sehr cool, vielen Dank für die Mühe! Das werde ich natürlich ausprobieren. Melde mich mit Resultat!

                      mickymM 1 Antwort Letzte Antwort
                      0
                      • S Segelfreak

                        @mickym sehr cool, vielen Dank für die Mühe! Das werde ich natürlich ausprobieren. Melde mich mit Resultat!

                        mickymM Online
                        mickymM Online
                        mickym
                        Most Active
                        schrieb am zuletzt editiert von
                        #11

                        @segelfreak Du solltest in jedem Fall den Kontext beim Neustart initialisieren, also die iobroker-In Nodes beim Start feuern lassen:

                        a6f3e621-995c-46b8-a505-4b6c77d70d4a-image.png

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        S 1 Antwort Letzte Antwort
                        0
                        • mickymM mickym

                          @segelfreak Du solltest in jedem Fall den Kontext beim Neustart initialisieren, also die iobroker-In Nodes beim Start feuern lassen:

                          a6f3e621-995c-46b8-a505-4b6c77d70d4a-image.png

                          S Offline
                          S Offline
                          Segelfreak
                          schrieb am zuletzt editiert von
                          #12

                          @mickym ja, das hatte ich eigentlich auch eingestellt.

                          S 1 Antwort Letzte Antwort
                          0
                          • S Segelfreak

                            @mickym ja, das hatte ich eigentlich auch eingestellt.

                            S Offline
                            S Offline
                            Segelfreak
                            schrieb am zuletzt editiert von
                            #13

                            läuft und schaltet umgehend in beide Richtungen! Toll, nochmals vielen Dank!

                            Bildschirm­foto 2022-12-06 um 22.16.59.png

                            mickymM 1 Antwort Letzte Antwort
                            0
                            • S Segelfreak

                              läuft und schaltet umgehend in beide Richtungen! Toll, nochmals vielen Dank!

                              Bildschirm­foto 2022-12-06 um 22.16.59.png

                              mickymM Online
                              mickymM Online
                              mickym
                              Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @segelfreak Man hat halt mehr Kontrolle, wenn man das selber macht - man hätte es auch machen können mit der Hystere Node - aber dann sparst Du auch nicht mehr viel gegenüber den Standardnodes. ;)

                              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                              S 2 Antworten Letzte Antwort
                              0
                              • mickymM mickym

                                @segelfreak Man hat halt mehr Kontrolle, wenn man das selber macht - man hätte es auch machen können mit der Hystere Node - aber dann sparst Du auch nicht mehr viel gegenüber den Standardnodes. ;)

                                S Offline
                                S Offline
                                Segelfreak
                                schrieb am zuletzt editiert von Segelfreak
                                #15

                                @mickym so ist schon prima. Wieder etwas dazu gelernt, auch mit den Standard-Nodes zu arbeiten. So kommt man Schritt für Schritt besser in das Thema und sieht, welche Möglichkeiten und Ansätze es gibt. Das passt schon!

                                1 Antwort Letzte Antwort
                                0
                                • mickymM mickym

                                  @segelfreak Man hat halt mehr Kontrolle, wenn man das selber macht - man hätte es auch machen können mit der Hystere Node - aber dann sparst Du auch nicht mehr viel gegenüber den Standardnodes. ;)

                                  S Offline
                                  S Offline
                                  Segelfreak
                                  schrieb am zuletzt editiert von Segelfreak
                                  #16

                                  @mickym so jetzt habe ich offenbar doch noch ein kleines Problem. Und zwar ist es so, dass beim shelly 1 alles ganz normal klappt. Der andere Schalter ist ein Shelly Plus 1 und der reagiert jetzt irgendwie nicht so, wie er sollte. Mir ist das nicht gleich aufgefallen, weil der Datenpunkt sauber aktualisiert wird. Tatsächlich schaltet er aber nicht.
                                  Aber... wenn ich in den Objekten im Admin den Switch direkt schalte, und zwar nur über die Schalter-Funktion, dann wird auch tatsächlich am Schalter getriggert.
                                  Ich hoffe, ich beschreibe das einigermaßen verständlich und ich kann mir das jetzt auch nicht erklären, warum das nun plötzlich anders ist.
                                  Ich habe versucht, den Schalter in node-red als String zu verwenden, statt boolean. Aber weder alles klein "true/false", noch gross "TRUE/FALSE", brachte eine Änderung. Es geht wirklich nur über den Admin-Switch

                                  Bildschirm­foto 2022-12-07 um 23.34.45.png

                                  Ich vermute, dass es ein spezifisches Problem mit dem Shelly Plus 1 ist, weil der flow exakt so mit dem anderen shelly 1 funktioniert. Hat jemand eine Idee, wie man das in den Griff bekommen kann?

                                  1 Antwort Letzte Antwort
                                  0
                                  • mickymM Online
                                    mickymM Online
                                    mickym
                                    Most Active
                                    schrieb am zuletzt editiert von mickym
                                    #17

                                    @segelfreak Hast Du das auch als command nicht als value geschickt - Du kannst das schon als Boolean schicken. Schau auch dass Du die Konvertierung in der Adapterkonfiguration ausgeschaltet hast. Wenn Du es über die admin Oberfläche schaffst, dann geht das mit Node Red auch. Ich tippe mal Du hast value statt command geschickt.

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    S 1 Antwort Letzte Antwort
                                    1
                                    • mickymM mickym

                                      @segelfreak Hast Du das auch als command nicht als value geschickt - Du kannst das schon als Boolean schicken. Schau auch dass Du die Konvertierung in der Adapterkonfiguration ausgeschaltet hast. Wenn Du es über die admin Oberfläche schaffst, dann geht das mit Node Red auch. Ich tippe mal Du hast value statt command geschickt.

                                      S Offline
                                      S Offline
                                      Segelfreak
                                      schrieb am zuletzt editiert von
                                      #18

                                      @mickym das war's, ich hatte value drin, nicht command! Das war auch tatsächlich anders als beim anderen Schalter. Danke für die schnelle Hilfe!

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


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      723

                                      Online

                                      32.6k

                                      Benutzer

                                      82.1k

                                      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