Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Mqtt Wert +/- in 2 Werte Schreiben

Scheduled Pinned Locked Moved Node-Red
12 Posts 3 Posters 1.0k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 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
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by 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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        0
        • J Offline
          J Offline
          Jacke
          wrote on last edited by
          #6

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

          paul53P 1 Reply Last reply
          0
          • mickymM mickym

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

            J Offline
            J Offline
            Jacke
            wrote on last edited by
            #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 Reply Last reply
            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
              wrote on last edited by
              #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 Reply Last reply
              0
              • J Jacke

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

                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by 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 Replies Last reply
                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
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • paul53P paul53

                    @jacke sagte: code kann nicht analysiert werden.

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

                    J Offline
                    J Offline
                    Jacke
                    wrote on last edited by
                    #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 Reply Last reply
                    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
                      wrote on last edited by 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 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      845

                      Online

                      32.6k

                      Users

                      82.2k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe