Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    874

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.5k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    5.8k

I2C-Bus auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 670 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

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        451

        Online

        33.0k

        Benutzer

        83.5k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2026
        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