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. I2C-Bus auslesen

NEWS

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

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

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

I2C-Bus auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 579 Aufrufe
  • Ä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.
  • M Offline
    M Offline
    magifox
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      rewenode
      schrieb am zuletzt editiert von
      #2

      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 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        magifox
        schrieb am zuletzt editiert von
        #3

        Herzlichen Dank für deine ausführliche Info!

        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

        365

        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