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. Mqtt Wert +/- in 2 Werte Schreiben

NEWS

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

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

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

Mqtt Wert +/- in 2 Werte Schreiben

Geplant Angeheftet Gesperrt Verschoben Node-Red
12 Beiträge 3 Kommentatoren 843 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.
  • J Offline
    J Offline
    Jacke
    schrieb am zuletzt editiert von
    #1

    Hallo ich fange einen Mqtt Wert ab und dieser ist mal Positiv und mal negativ.
    Screenshot 2024-07-18 193048.jpg
    Bisher habe ich ihn in Blockly in 2 positive Werte geschrieben
    Screenshot 2024-07-18 193149.jpg
    In dem Blockly script habe ich immer bei einer Veränderung des Wertes die Logik ausgeführt, dadurch stoppte aber immer das script wegen zu vieler abfragen. Jetzt wollte ich es per Node Red machen da bin ich aber ein kompletter Trottel drin.

    paul53P mickymM 2 Antworten Letzte Antwort
    0
    • J Jacke

      Hallo ich fange einen Mqtt Wert ab und dieser ist mal Positiv und mal negativ.
      Screenshot 2024-07-18 193048.jpg
      Bisher habe ich ihn in Blockly in 2 positive Werte geschrieben
      Screenshot 2024-07-18 193149.jpg
      In dem Blockly script habe ich immer bei einer Veränderung des Wertes die Logik ausgeführt, dadurch stoppte aber immer das script wegen zu vieler abfragen. Jetzt wollte ich es per Node Red machen da bin ich aber ein kompletter Trottel drin.

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

      @jacke sagte: Bisher habe ich ihn in Blockly in 2 positive Werte geschrieben

      Weshalb nicht einfach zwei Alias-DP mit Lesekonvertierung?
      Wie sieht der MQTT-Wert aus?

      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

      J 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @jacke sagte: Bisher habe ich ihn in Blockly in 2 positive Werte geschrieben

        Weshalb nicht einfach zwei Alias-DP mit Lesekonvertierung?
        Wie sieht der MQTT-Wert aus?

        J Offline
        J Offline
        Jacke
        schrieb am zuletzt editiert von
        #3

        @paul53 In Mqtt sieht es so aus
        Screenshot 2024-07-18 200233.jpg
        Mit Alias geht das auch wäre dann die Konvertierungsfunktion?
        Ich versuche gerade die Syntax dafür zu finden
        Screenshot 2024-07-18 200437.jpg

        paul53P 1 Antwort Letzte Antwort
        0
        • J Jacke

          @paul53 In Mqtt sieht es so aus
          Screenshot 2024-07-18 200233.jpg
          Mit Alias geht das auch wäre dann die Konvertierungsfunktion?
          Ich versuche gerade die Syntax dafür zu finden
          Screenshot 2024-07-18 200437.jpg

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

          @jacke sagte: die Konvertierungsfunktion?

          Mit dem eigenen Datenpunkt, der Zahlen enthält:

          val > 0 ? val : 0
          

          und

          val < 0 ? -val : 0
          

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

          1 Antwort Letzte Antwort
          0
          • J Jacke

            Hallo ich fange einen Mqtt Wert ab und dieser ist mal Positiv und mal negativ.
            Screenshot 2024-07-18 193048.jpg
            Bisher habe ich ihn in Blockly in 2 positive Werte geschrieben
            Screenshot 2024-07-18 193149.jpg
            In dem Blockly script habe ich immer bei einer Veränderung des Wertes die Logik ausgeführt, dadurch stoppte aber immer das script wegen zu vieler abfragen. Jetzt wollte ich es per Node Red machen da bin ich aber ein kompletter Trottel drin.

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

            @jacke nimm einfach eine changenode.JSONATA hat eine absolut Funktion.

            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.

            J 1 Antwort Letzte Antwort
            0
            • J Offline
              J Offline
              Jacke
              schrieb am zuletzt editiert von
              #6

              da bekomme ich die Meldung code kann nicht analysiert werden.
              Screenshot 2024-07-18 201024.jpg

              paul53P 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @jacke nimm einfach eine changenode.JSONATA hat eine absolut Funktion.

                J Offline
                J Offline
                Jacke
                schrieb am zuletzt editiert von
                #7

                @mickym
                ok invertiert bekommen habe ich es.
                Screenshot 2024-07-18 201858.jpg
                jetzt bräuchte ich noch die logik dadrin

                payload < 0 then payload *-1 else 0
                

                ich habe halt keine Ahnung von der Syntax
                gibt es einen Empfehlenswerten blog oder youtuber dazu?

                mickymM 1 Antwort Letzte Antwort
                0
                • J Jacke

                  @mickym
                  ok invertiert bekommen habe ich es.
                  Screenshot 2024-07-18 201858.jpg
                  jetzt bräuchte ich noch die logik dadrin

                  payload < 0 then payload *-1 else 0
                  

                  ich habe halt keine Ahnung von der Syntax
                  gibt es einen Empfehlenswerten blog oder youtuber dazu?

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

                  @jacke Nochmal wenn Du JSONATA hast, dann hast Du doch eine Funktionsreferenz und abs ist gleich die erste Funktion

                  894f32f0-fa57-4df7-b3db-0ae9a14bc8ae-image.png

                  30ce8a1c-dd97-4467-a088-19a24f44bde9-image.png

                  und gut ist.

                  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.

                  1 Antwort Letzte Antwort
                  0
                  • J Jacke

                    da bekomme ich die Meldung code kann nicht analysiert werden.
                    Screenshot 2024-07-18 201024.jpg

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

                    @jacke sagte: code kann nicht analysiert werden.

                    Nur Lesekonvertierung und mit Fragezeichen (sorry, war mein Fehler).

                    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

                    mickymM J 2 Antworten Letzte Antwort
                    0
                    • paul53P paul53

                      @jacke sagte: code kann nicht analysiert werden.

                      Nur Lesekonvertierung und mit Fragezeichen (sorry, war mein Fehler).

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

                      @paul53 sagte in Mqtt Wert +/- in 2 Werte Schreiben:

                      @jacke sagte: code kann nicht analysiert werden.

                      Nur Lesekonvertierung und mit Fragezeichen (sorry, war mein Fehler).

                      Hat mit NodeRed nur nicht wirklich was zu tun, wenn er die Werte direkt in NodeRed via mqtt abgreift und nicht über einen Adapter.

                      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.

                      1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @jacke sagte: code kann nicht analysiert werden.

                        Nur Lesekonvertierung und mit Fragezeichen (sorry, war mein Fehler).

                        J Offline
                        J Offline
                        Jacke
                        schrieb am zuletzt editiert von
                        #11

                        @paul53
                        hat funktioniert ich hate es beim lesen und schreiben versucht jetzt klappt es.

                        @mickym
                        ja ist kein NodeRed funktioniert hat es jetzt möchte ich es trotzdem über NodeRed noch schaffen.
                        $abs(payload) konvertiert denn negativen Wert in einen positiven habe es gerade getestet hat geklappt. Aber ich muss den Wert der negativ und positiv ist in 2 Datenpunkte schreiben

                        1. wenn negativ in DP1 als positiven Wert (abs(payload) und DP2 dann 0
                        2. wenn positiv DP1 = 0 und DP2 = wert (payload)
                        mickymM 1 Antwort Letzte Antwort
                        0
                        • J Jacke

                          @paul53
                          hat funktioniert ich hate es beim lesen und schreiben versucht jetzt klappt es.

                          @mickym
                          ja ist kein NodeRed funktioniert hat es jetzt möchte ich es trotzdem über NodeRed noch schaffen.
                          $abs(payload) konvertiert denn negativen Wert in einen positiven habe es gerade getestet hat geklappt. Aber ich muss den Wert der negativ und positiv ist in 2 Datenpunkte schreiben

                          1. wenn negativ in DP1 als positiven Wert (abs(payload) und DP2 dann 0
                          2. wenn positiv DP1 = 0 und DP2 = wert (payload)
                          mickymM Online
                          mickymM Online
                          mickym
                          Most Active
                          schrieb am zuletzt editiert von mickym
                          #12

                          @jacke sagte in Mqtt Wert +/- in 2 Werte Schreiben:

                          @mickym
                          ja ist kein NodeRed funktioniert hat es jetzt möchte ich es trotzdem über NodeRed noch schaffen.
                          $abs(payload) konvertiert denn negativen Wert in einen positiven habe es gerade getestet hat geklappt. Aber ich muss den Wert der negativ und positiv ist in 2 Datenpunkte schreiben

                          wenn negativ in DP1 als positiven Wert (abs(payload) und DP2 dann 0
                          wenn positiv DP1 = 0 und DP2 = wert (payload)

                          Nun dann ist das ja keine mathematische Funktion, sondern Du willst 2 Fälle unterscheiden und in unterschiedliche Datenpunkte dann entweder die payload direkt oder den invertierten Wert schreiben. Klassisch wie mit dem falls in Deinem Blockly untersuchst Du unterschiedliche Fälle mit einer Switch Node.

                          42c70881-ca5a-4f21-b056-c7e0ff5a2d8c-image.png

                          Hier zum Import:

                          [{"id":"bd5f7a9a53ef5678","type":"inject","z":"289f539dcc33814e","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"-45","payloadType":"num","x":190,"y":7200,"wires":[["e161cbdca92e3b02"]]},{"id":"1f315bca40a9dd59","type":"inject","z":"289f539dcc33814e","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"45","payloadType":"num","x":190,"y":7240,"wires":[["e161cbdca92e3b02"]]},{"id":"e161cbdca92e3b02","type":"switch","z":"289f539dcc33814e","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gte","v":"0","vt":"num"},{"t":"lt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":350,"y":7220,"wires":[["7b96cde06b278c06","1b68ac68575bd4f9"],["0b61b1c6cc96e19b","771afa5b951f038d"]]},{"id":"0b61b1c6cc96e19b","type":"change","z":"289f539dcc33814e","name":"payload *-1","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload * -1","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":7180,"wires":[["205119c4b27273ce"]]},{"id":"97d10ea79b2fc663","type":"ioBroker out","z":"289f539dcc33814e","d":true,"name":"","topic":"DP1","ack":"true","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":790,"y":7160,"wires":[]},{"id":"771afa5b951f038d","type":"change","z":"289f539dcc33814e","name":"payload = 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":7260,"wires":[["1b68ac68575bd4f9"]]},{"id":"0fc9b8afd7f05c1b","type":"ioBroker out","z":"289f539dcc33814e","d":true,"name":"","topic":"DP2","ack":"true","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":790,"y":7240,"wires":[]},{"id":"7b96cde06b278c06","type":"change","z":"289f539dcc33814e","name":"payload = 0","rules":[{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":7140,"wires":[["205119c4b27273ce"]]},{"id":"72de10b2d51a21b5","type":"debug","z":"289f539dcc33814e","name":"Check DP1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":7100,"wires":[]},{"id":"b219337d3d941aaa","type":"debug","z":"289f539dcc33814e","name":"Check DP2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":7300,"wires":[]},{"id":"205119c4b27273ce","type":"junction","z":"289f539dcc33814e","x":680,"y":7160,"wires":[["97d10ea79b2fc663","72de10b2d51a21b5"]]},{"id":"1b68ac68575bd4f9","type":"junction","z":"289f539dcc33814e","x":680,"y":7220,"wires":[["0fc9b8afd7f05c1b","b219337d3d941aaa"]]}]
                          

                          Man kann das Ganze aber auch in eine Change Node packen. ;) Da Du die topics in der iobroker out dynamisch setzen kannst.

                          So hier noch um die Kurzversion ergänzt:

                          7292857e-41d3-4e04-a254-52ac25309e11-image.png

                          Auch hier wieder zum Import:

                          [{"id":"4c9de38276510bfd","type":"inject","z":"289f539dcc33814e","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"-45","payloadType":"num","x":190,"y":7480,"wires":[["70bcb454e20d9db9"]]},{"id":"3038fa2a5c632695","type":"inject","z":"289f539dcc33814e","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"45","payloadType":"num","x":190,"y":7520,"wires":[["70bcb454e20d9db9"]]},{"id":"f7abecce71583f6e","type":"change","z":"289f539dcc33814e","name":"payload = 0","rules":[{"t":"set","p":"topic","pt":"msg","to":"payload < 0 ? \"DP2\" :\"DP1\"","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":7480,"wires":[["513a2df25efaa762","78a2d57ff987a5d6"]]},{"id":"c6201493abe23e68","type":"change","z":"289f539dcc33814e","name":"$abs(payload)","rules":[{"t":"set","p":"topic","pt":"msg","to":"payload < 0 ? \"DP1\" :\"DP2\"","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"$abs(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":7520,"wires":[["513a2df25efaa762","78a2d57ff987a5d6"]]},{"id":"78a2d57ff987a5d6","type":"debug","z":"289f539dcc33814e","name":"Ergebnis","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":600,"y":7480,"wires":[]},{"id":"513a2df25efaa762","type":"ioBroker out","z":"289f539dcc33814e","d":true,"name":"beide Datenpunkte","topic":"","ack":"true","autoCreate":"false","stateName":"","role":"","payloadType":"","readonly":"","stateUnit":"","stateMin":"","stateMax":"","x":630,"y":7520,"wires":[]},{"id":"70bcb454e20d9db9","type":"junction","z":"289f539dcc33814e","x":280,"y":7500,"wires":[["f7abecce71583f6e","c6201493abe23e68"]]}]
                          

                          Gleiche Farben bedeuten identische Ausgaben, sowohl mit dem Flow 1 als auch Flow 2.

                          In der ersten Change Node wird also 0 in einen Datenpunkt geschrieben, der mit topic spezifiziert wird.

                          b29ad752-bcb9-42e6-8b18-4688526e968c-image.png

                          Wenn payload <0 dann wird in eine payload mit dem Wert 0 in den Datenpunkt 2 (=topic) geschrieben, wenn die payload >=0 ist dann in Datenpunkt1 (=topic)

                          Umgekehrt

                          6fec2ec4-05d4-445c-a7f4-3c22df4aab80-image.png

                          war die payload > 0 dann wird der Absolutwert in Datenpunkt 1, sonst in Datenpunkt 2 geschrieben.

                          5c0af8e4-e830-46fe-9cc0-6433d6b3a50c-image.png

                          Wenn man in der iobroker-Out Node kein topic einträgt, wird das topic automatisch vom Nachrichtenobjekt genommen. Du musst also

                          DP1 noch gegen Deinen Pfad der Datenpunkte ersetzen, also "0_userdata.0.DP1" bzw.
                          DP2 gegen "0_userdata.0.DP2" - also wohin Du die beiden Werte auch immer Du schreiben willst.

                          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.

                          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

                          811

                          Online

                          32.4k

                          Benutzer

                          81.5k

                          Themen

                          1.3m

                          Beiträge
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                          ioBroker Community 2014-2025
                          logo
                          • Anmelden

                          • Du hast noch kein Konto? Registrieren

                          • Anmelden oder registrieren, um zu suchen
                          • Erster Beitrag
                            Letzter Beitrag
                          0
                          • Home
                          • Aktuell
                          • Tags
                          • Ungelesen 0
                          • Kategorien
                          • Unreplied
                          • Beliebt
                          • GitHub
                          • Docu
                          • Hilfe