Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. I2C-Bus auslesen

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    I2C-Bus auslesen

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

      Hallo,

      ich kämpfe immer noch mit dem I2C-Bus das Beispiel soll eine Temperatur auslesen und auf einem Debug Node abzeigen

      habe allerdings nun eine funktionierende Lösung … verstehe sie aber nicht

      neu wurde ein Change Node eingefügt.

      Darin steht eine Formel die mit der Aufgabe nichts zu tun hat

      Seitdem wird am Debug Node der richtige Wert angezeigt.

      Kennt da jemand die Erklärung?

      > [{"id":"196f2db3.ca5ba2","type":"inject","z":"31c65011.a45468","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":380,"wires":[["cb80319c.2ac42"]]},{"id":"43e4dd20.9ca9d4","type":"change","z":"31c65011.a45468","name":"buffer","rules":[{"t":"set","p":"buffer","pt":"msg","to":"$round((payload.\"1\" + (256 * payload.\"0\"))/1.2,2)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":270,"y":300,"wires":[["a868659d.91d9b8"]]},{"id":"a868659d.91d9b8","type":"debug","z":"31c65011.a45468","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","x":450,"y":300,"wires":[]},{"id":"cb80319c.2ac42","type":"i2c in","z":"31c65011.a45468","name":"Temp-Baustein","address":"72","command":"0","count":"1","x":280,"y":380,"wires":[["43e4dd20.9ca9d4"]]}]

      1 Reply Last reply Reply Quote 0
      • R
        rewenode last edited by

        Also dein flow passt vorn und hinten nicht zusammen. Dein debug-node zeigt genau den payload an, den dein i2c-node ausgibt.

        Dein change-node tut eigentlich gar nichts sinnvolles.

        $round(
           (
               payload."1" + (256 * payload."0")
           )/1.2,
           2
        )
        

        Der JSONata Ausdruck soll eine msg-property namens buffer setzen.

        Und zwar aus dem Eingangs payload."1", was immer das sein soll ? Ein payload."2" gibt es ebenso wenig. Ergo, das Ergebnis des Ausdruckes ist null und eine property buffer wird nicht gebildet.

        Payload wird von change-node nicht angefasst und einfach an den Aufgang weitergereicht. Was du siehst sollte der buffer des i2c-nodes sein.

        Vlt. solltest du einfach mal erklären, was das change-node denn machen SOLLTE.

        Ich hab jetzt weder deinen Sensor, noch einen raspi um das zu testen. Aber wenn ich das i2c-node richtig interpretiere liefert es nach deinen Einstellungen das Ergebnis des Command=0 als buffer mit der Länge 1 zurück.

        Und nach dem Datenblatt des TC74x ist das die Temperatur im 2er Complement (standard Int8).

        Du musst also lediglich dein bufferbyte zurück nach int8 konvertieren, das kannst du z.B. so machen:

        ! ````
        [{"id":"5a33628b.2780dc","type":"function","z":"6afed17e.ffe838","name":"buffer 0x7e => 126 ","func":"var buf = new Buffer(1);\nbuf.writeInt8(0x7e, 0);\nmsg.payload = buf;\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":180,"wires":[["cac70295.1dfce","fd7a7c41.1e68e8"]]},{"id":"edfe5e88.96bd2","type":"inject","z":"6afed17e.ffe838","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":380,"y":140,"wires":[["5a33628b.2780dc"]]},{"id":"cac70295.1dfce","type":"function","z":"6afed17e.ffe838","name":"buffer to int8","func":"msg.payload = msg.payload.readInt8();\nreturn msg;","outputs":1,"noerr":0,"x":610,"y":180,"wires":[["9a8a088a.f95868"]]},{"id":"9a8a088a.f95868","type":"debug","z":"6afed17e.ffe838","name":"int from buffer","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","x":800,"y":180,"wires":[]},{"id":"fd7a7c41.1e68e8","type":"debug","z":"6afed17e.ffe838","name":"buffer from i2c","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","x":620,"y":240,"wires":[]},{"id":"6aff5297.e075e4","type":"comment","z":"6afed17e.ffe838","name":"das simuliert dein i2c","info":"","x":360,"y":60,"wires":[]},{"id":"8f89ae3f.6c71e","type":"comment","z":"6afed17e.ffe838","name":"das i2c liefert ein buf[1]","info":"","x":360,"y":100,"wires":[]},{"id":"95fc6ee4.aafac","type":"comment","z":"6afed17e.ffe838","name":"convertiert das buffer-byte nach integer","info":"","x":690,"y":100,"wires":[]}]

        
         ![3999_i2c.png](/assets/uploads/files/3999_i2c.png) 
        
        Du musst eigentlich nur das mittlere function-node an dein i2c node hängen und gut is.
        
        Ich konnte jetzt nicht prüfen, ob das i2c das payload selber als buffer liefert (gehe ich mal von aus) oder ob es den buffer da als property innerhalb von payload gibt.
        1 Reply Last reply Reply Quote 0
        • M
          magifox last edited by

          Herzlichen Dank für deine ausführliche Info!

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

          Support us

          ioBroker
          Community Adapters
          Donate

          856
          Online

          32.1k
          Users

          80.7k
          Topics

          1.3m
          Posts

          2
          3
          532
          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