Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Mehrere Steckdosen Werte vergleichen zum Schalten

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Mehrere Steckdosen Werte vergleichen zum Schalten

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kredar last edited by

      Hallo,

      ich versuche eine Klimaanlage abschalten zu lassen wenn alle Geräte (in meinem Fall PCs) nicht mehr an sind. Wenn jedoch eines der Geräte läuft soll die Klimaanlage an bleiben, bis dieses auch aus ist.

      flows.json

      Nun bekomme ich bei den PCs in meinem Beispiel natürlich Spannungswerte z.b. 194.37 Watt als indikator das der PC noch an ist.

      Wenn ich ein Debug hinter den PCWert iobroker.get Node setze kommt nicht der Wert 194.37 raus sondern 1687587754670. Das liegt daran das ich statt msg.payload in dem Node Steckdose1 (bis3) drin stehen habe damit ich im fuction Node es vergleichen kann. Wie kann ich im PCWert Node wieder msg.payload einsetzen und dennoch hinten im fuction Node die Werte auseinanderhalten? Oder gibt es da was besseres um das besser zu lösen?

      Habe hier schon gesucht und es schon längere Zeit versucht auf mein Beispiel umzusetzen aber immer ohne Erfolg. Evtl. geht es auch viel einfacher und ich bin einfach nicht drauf gekommen, bzw. habe es hier im Forum ein Beispiel überlesen.

      mfg

      geschild mickym 2 Replies Last reply Reply Quote 0
      • geschild
        geschild @Kredar last edited by

        @kredar nodered.jpg
        Anbei oben: dein Flow inportiert aus "flows.json"
        unten: mein Vorschlag

        1 Reply Last reply Reply Quote 0
        • K
          Kredar last edited by Kredar

          Merci für deine Antwort.

          Selbst wenn ich die PC Power statt hintereinander nebeneinander wie bei dir stelle bekomme ich immer noch statt den Watt Wert einen wirren Wert (1687623158028) raus. Steht bei deinem Function Node das selbe wie in meinem? Dann klappt das so nicht, leider. Habe es getestet, ändert leider nichts.

          Ich habe eher das Problem in dem Function Node die PC Power zu "labeln" damit sie dort verarbeitet werden können. Aktuell habe ich ja bei den PC Power unter Attribute Steckdose1-3 stehen in je nach PC Power. Also bei PC Power z.b. Steckdose1, usw. Aber das verfälscht wohl den waren Watt wert. Aber wie kann ich dem Function Node klar machen das z.b. Steckdose 1 das PC Power 1 ist. Wenn ich im PC Power im Attribute Wert payload eintrage dann kommen die korrekte Watt Werte im Function Node an aber dieser kann nicht unterscheiden aktuell welcher Wert welcher ist. Wobei das egal wäre, solange ein PC an ist soll der Function Node nicht false senden. True im Funktion Node geht auch ins "leere".

          Die Lösung ist wahrscheinlich total einfach, aber ich komme einfach nicht drauf zur Zeit...

          mfg

          1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active last edited by

            Die Parallele Schaltung macht keinen Sinn, da die Nachrichtenobjekte zu unterschiedlichen Zeiten angekommen. Mit der seriellen Schaltung geht es, aber man muss in jeder get Node einen anderen Attributnamen vergeben. Die Attributnamen referenziert man in der Function Node auf der root Ebene des Nachrichtenobjektes Also Attribut in get Node: wert1 ist in der function Node msg.wert1. Kann leider im Moment nicht mehr helfen, da unterwegs am Handy.

            K 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active last edited by

              Und ich verstehe mal wieder nicht, warum alle so gerne programmieren.

              1 Reply Last reply Reply Quote 0
              • K
                Kredar @mickym last edited by

                @mickym

                Danke für deine Antwort. Eilt nicht. Nur wenn du Zeit findest :). Wäre cool wenn man das Problem lösen könnte, da grübel ich schon länger dran.

                Ich habe ja im get.Node jedem unter den Attributen einen anderen Namen vergeben. Steckdose1, Steckdose2 und Steckdose3. Nur kommen wenn ich den payload der da standartmässig ist ersetze damit wirre Watt Werte raus statt dem unter dem get.Node angezeigen korrekten Watt Wert.

                Wie gesagt ich glaube es ist einfach, habe diese Schaltung mehrfach in gebrauch, und überall leider das selbe Problem.

                mfg

                1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Kredar last edited by mickym

                  @kredar ja uch glaube ich weiß was Dein Problem ist. Du hast leider in Deiner Adapterkonfig angehakt, dass iobroker Werte in Strings konvertiert werden. Deswegen werden Deine Werte als Strings behandelt und aneinander gehängt. Mach mal diese unselige Option aus Deiner Adapterkonfig.

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    Kredar @mickym last edited by

                    @mickym

                    Wo genau? In welchem Adapter meinst du? Wie ich das von dir verstehe habe ich da generell was falsch aktiviert.

                    mfg

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Kredar last edited by mickym

                      @kredar im der Konfiguration des NodeRed Adapters gibts eine Option dass alles in Strings konvertiert wird. Diesen Haken raus machen. Geh unter Instanzen und klick auf den Schraubenschlüssel Deiner NodeRed Instanz.

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        Kredar @mickym last edited by

                        @mickym

                        Gefunden, danke.

                        ioBroker-Werte in Zeichenkette Konvertieren meintest du. Ist nun deaktiviert.

                        Hab es unverändet getestet aber die Werte kommen immer noch nicht korrekt raus aus den get.Nodes (z.b.1687625887042) statt dem korrekten Watt Wert.

                        Und ich liebe ioBroker habe schon vieles umgesetzt im und rund um unser Haus. Aber einiges ist schwerer zu lösen für mich als andere Schaltungen. Wenn mehrfach Werte im Spiel sind wird das ganze komplizierter, als bei einem Wert der was auslösen soll.

                        mfg

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Kredar last edited by

                          @kredar wenn du das geändert hast muss der Adapter neu gestartet werden. Weiteres kann ich erst beantworten wenn ich daheim bin.

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            Kredar @mickym last edited by

                            @mickym

                            Habe den Node-Adapter neu gestaret, aber leider das selbe Ergebnis wie zuvor.

                            Fahre erstmal Heim, wie gesagt vielen Dank für deine Hilfe. Aber so brisant ist es nicht das du es von Unterwegs aus Lösen musst.

                            mfg

                            geschild 1 Reply Last reply Reply Quote 0
                            • geschild
                              geschild @Kredar last edited by geschild

                              @kredar flow.jpg

                              Was du immer siehst, ist ein UTC-Timestamp (payload des <Abfragetimers>), der wird durch die <iobroker get> durchgeschleust.
                              Ich denke mit den <iobroker input> sollte es klappen.

                              Zum Thema: Mehrere Inputs an der function, schau dir das mal an: https://www.youtube.com/watch?v=7BxkS5iSE0Q

                              K 1 Reply Last reply Reply Quote 0
                              • K
                                Kredar @geschild last edited by Kredar

                                @geschild

                                Habe es mal geändert, aber nun wertet der Functions.Node gar nicht mehr aus und es kommt immer "false" raus.

                                [
                                    {
                                        "id": "08520bdff45a887a",
                                        "type": "ioBroker in",
                                        "z": "0b655b9b45bd5f79",
                                        "name": "Steckdose1",
                                        "topic": "PC1.ENERGY_Power",
                                        "payloadType": "value",
                                        "onlyack": "",
                                        "func": "all",
                                        "gap": "",
                                        "fireOnStart": "false",
                                        "outFormat": "MQTT",
                                        "x": 270,
                                        "y": 520,
                                        "wires": [
                                            [
                                                "b0b91f3bb64ff1af",
                                                "a47a4c0635bb5010"
                                            ]
                                        ]
                                    }
                                ]
                                

                                Meintest du diesen Node? Mit dem klappt die Auswertung im Function.Node leider nicht.

                                mfg

                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @Kredar last edited by mickym

                                  @kredar So - ich würde es zwar nicht so machen - da Du mit Strings arbeitest - aber im Prinzip funktioniert Dein Flow.

                                  316cc604-6986-4776-aaa4-f3029d7d70cd-image.png

                                  e4c98ef4-61ba-4efb-ae81-09102001b184-image.png

                                  Wenn eine Steckdose über 20 ist kommt true raus, sonst false.

                                  K 1 Reply Last reply Reply Quote 0
                                  • K
                                    Kredar @mickym last edited by Kredar

                                    @mickym

                                    Hmm, trotz der komischen Werte geht es, das wurdert mich. Wollte die großen Werte "Glattziehen" und die realen Werte nehmen. Aber das es momentan geht ist ja auch klar bei einem Wert von 1687639024058 pro Node.

                                    Gibt es da einen Eleganteren Weg oder wieso würdest du es nicht so machen?

                                    mfg

                                    mickym 2 Replies Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @Kredar last edited by

                                      @kredar Gut also die Aufgabe ist, dass sobald eine Steckdose über 20 Watt braucht - soll die Klimaanlage eingeschaltet werde also true ausschmeißen, ansonsten false?

                                      1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @Kredar last edited by mickym

                                        @kredar Weil ich es nicht gut finde - wenn man mit Zeit triggert - ich würde die Datenpunkte triggern lassen.

                                        9511d7f1-8257-445d-9d22-f7e0760e41e6-image.png

                                        Ich arbeite soweit möglich ohne function Nodes.

                                        Ich sammle alle Ergebnisse in einem Objekt, wobei jede Eigenschaft bereits true oder false hat, ob über 20 Watt oder nicht und dann verknüpfe ich alle Ergebnisse mit ODER.

                                        [
                                            {
                                                "id": "556a4e08f5940d01",
                                                "type": "ioBroker in",
                                                "z": "0a30fff805c63db0",
                                                "name": "",
                                                "topic": "0_userdata.0.Test.PC_Power.PC1-Energy",
                                                "payloadType": "value",
                                                "onlyack": "",
                                                "func": "all",
                                                "gap": "",
                                                "fireOnStart": "true",
                                                "outFormat": "ioBroker",
                                                "x": 240,
                                                "y": 360,
                                                "wires": [
                                                    [
                                                        "3548421128b007da"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "41b50f9f23ddf146",
                                                "type": "ioBroker in",
                                                "z": "0a30fff805c63db0",
                                                "name": "",
                                                "topic": "0_userdata.0.Test.PC_Power.PC2-Energy",
                                                "payloadType": "value",
                                                "onlyack": "",
                                                "func": "all",
                                                "gap": "",
                                                "fireOnStart": "true",
                                                "outFormat": "ioBroker",
                                                "x": 240,
                                                "y": 420,
                                                "wires": [
                                                    [
                                                        "3548421128b007da"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "f7206ede621ac7dd",
                                                "type": "ioBroker in",
                                                "z": "0a30fff805c63db0",
                                                "name": "",
                                                "topic": "0_userdata.0.Test.PC_Power.PC3-Energy",
                                                "payloadType": "value",
                                                "onlyack": "",
                                                "func": "all",
                                                "gap": "",
                                                "fireOnStart": "true",
                                                "outFormat": "ioBroker",
                                                "x": 240,
                                                "y": 480,
                                                "wires": [
                                                    [
                                                        "3548421128b007da"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "3548421128b007da",
                                                "type": "change",
                                                "z": "0a30fff805c63db0",
                                                "name": "",
                                                "rules": [
                                                    {
                                                        "t": "change",
                                                        "p": "topic",
                                                        "pt": "msg",
                                                        "from": ".*\\.(.*)$",
                                                        "fromt": "re",
                                                        "to": "$1",
                                                        "tot": "str"
                                                    },
                                                    {
                                                        "t": "set",
                                                        "p": "payload",
                                                        "pt": "msg",
                                                        "to": "payload > 20 ? true : false",
                                                        "tot": "jsonata"
                                                    }
                                                ],
                                                "action": "",
                                                "property": "",
                                                "from": "",
                                                "to": "",
                                                "reg": false,
                                                "x": 550,
                                                "y": 420,
                                                "wires": [
                                                    [
                                                        "0f824f4bf3764b13"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "355a7107b476d7e2",
                                                "type": "debug",
                                                "z": "0a30fff805c63db0",
                                                "name": "Objekt mit Einzelstates",
                                                "active": true,
                                                "tosidebar": true,
                                                "console": false,
                                                "tostatus": false,
                                                "complete": "payload",
                                                "targetType": "msg",
                                                "statusVal": "",
                                                "statusType": "auto",
                                                "x": 940,
                                                "y": 380,
                                                "wires": []
                                            },
                                            {
                                                "id": "0f824f4bf3764b13",
                                                "type": "join",
                                                "z": "0a30fff805c63db0",
                                                "name": "",
                                                "mode": "custom",
                                                "build": "object",
                                                "property": "payload",
                                                "propertyType": "msg",
                                                "key": "topic",
                                                "joiner": "\\n",
                                                "joinerType": "str",
                                                "accumulate": true,
                                                "timeout": "",
                                                "count": "1",
                                                "reduceRight": false,
                                                "reduceExp": "",
                                                "reduceInit": "",
                                                "reduceInitType": "",
                                                "reduceFixup": "",
                                                "x": 730,
                                                "y": 420,
                                                "wires": [
                                                    [
                                                        "355a7107b476d7e2",
                                                        "716d79ef4c4b8fe2"
                                                    ]
                                                ]
                                            },
                                            {
                                                "id": "716d79ef4c4b8fe2",
                                                "type": "change",
                                                "z": "0a30fff805c63db0",
                                                "name": "OR ?",
                                                "rules": [
                                                    {
                                                        "t": "set",
                                                        "p": "payload",
                                                        "pt": "msg",
                                                        "to": "$reduce(payload.*,function($i, $j){$i or $j})",
                                                        "tot": "jsonata"
                                                    }
                                                ],
                                                "action": "",
                                                "property": "",
                                                "from": "",
                                                "to": "",
                                                "reg": false,
                                                "x": 870,
                                                "y": 420,
                                                "wires": [
                                                    [
                                                        "bdfc2a74610ea7a7"
                                                    ]
                                                ],
                                                "info": "# Only one or more properties of an object need to be true.\n\n Only one or more properties of an object need to be true.\n\n`{\n    \"Office\": false,\n    \"Bedroom\": false,\n    \"Living Room Balcony\": false,\n    \"Liviueng Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis false,\n\n`{\n    \"Office\": false,\n    \"Bedroom\": true,\n    \"Living Room Balcony\": false,\n    \"Living Room Right Window\": false,\n    \"Living Room Left Window\": false\n}`\n\nis true.\n\n# Mindestens eine Eigenschaft des Objektes muss wahr sein.\n\nMindestens eine Eigenschaft des Objektes muss wahr sein.\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": false,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt false,\n\n`{\n    \"Büro Balkon\": false,\n    \"Schlafzimmer Balkon\": true,\n    \"Wohnzimmer Balkon\": false,\n    \"Wohnzimmer rechtes Fenster\": false,\n    \"Wohnzimmer linkes Fenster\": false\n}`\n\nergibt true (wahr)."
                                            },
                                            {
                                                "id": "bdfc2a74610ea7a7",
                                                "type": "debug",
                                                "z": "0a30fff805c63db0",
                                                "name": "Ergebnis",
                                                "active": true,
                                                "tosidebar": true,
                                                "console": false,
                                                "tostatus": false,
                                                "complete": "payload",
                                                "targetType": "msg",
                                                "statusVal": "",
                                                "statusType": "auto",
                                                "x": 1040,
                                                "y": 420,
                                                "wires": []
                                            }
                                        ]
                                        

                                        Dann brauchst Du nicht mit fixen Zeiten arbeiten.

                                        Wichtig ist wie gesagt dass die Konvertierung in Strings ausgeschlossen ist.

                                        cdd06885-b1dc-4d31-b296-d625badd3f71-image.png

                                        K 1 Reply Last reply Reply Quote 0
                                        • K
                                          Kredar @mickym last edited by

                                          @mickym

                                          Die Stings sind im Adapter aus. Das habe ich vorhin deaktiviert.

                                          Die Klimaanlage schalte ich ja Manuell an. Deshalb läuft das True ins "leere" auch es kann auch auf die Klimaanlage laufen. Egal sie muss an bleiben da einer im Raum ist.
                                          Sobald alle PCs aus sind checkt das der ioBroker und schalter die Klimaanlage aus. Ähnlich habe ich es auch mit dem Licht im Haus. Wenn alle Geräte aus sind, dann geht das Licht mit einem kleinen Delay auch aus. Natürlich ist da auch ein Lichtsensor im Spiel, damit das Licht nicht angeht bevor eine gewisse Lichtsvhwelle unterschritten wird. Aber zuück zur Klima: Ich schau mir eben deinen Vorschlag mal an.

                                          mfg

                                          mickym 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @Kredar last edited by mickym

                                            @kredar Wie gesagt Du kannst das auch umdrehen, wenn es nur ausschalten soll. Der große Unterschied ist, dass ich nicht alle 15 Minuten (oder ein gewisse Zeitspanne abfrage), sonder die Datenpunkte triggern lasse. Ausserdem hast Du mit dem Objekt jederzeit einen Überblick über den Zustand jedes Datenpunktes.

                                            K 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            986
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            37
                                            1317
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo