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. Blockly
  5. UDP Api Abfragen in Blocky exec "echo -e" / Marstek Venus

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

UDP Api Abfragen in Blocky exec "echo -e" / Marstek Venus

Geplant Angeheftet Gesperrt Verschoben Blockly
3 Beiträge 2 Kommentatoren 57 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.
  • D Online
    D Online
    derkleinschreiber
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich möchte gern eine UDP Api Abfrage machen. Leider komme ich nicht weiter.

    --> Ich möchte gern einen UDP Paket absenden und die direkt Antwort empfangen.
    --> Ich muss folgendes als UDP senden: { "id": 1, "method": "Bat.GetStatus", "params": { "id": 0 } }
    --> und dann die UDP Antwort an Blockly bekommen..

    Ich bin besitzer einer Marstek Venus v3 (Batteriespeicher) welches so abgefragt wird. (Es gibt noch keinen Adapter dazu hier.)

    Da blockly kein UPD kann verwende "exec" mit einem externen command und werte die Rückgabe aus.

    Als externes Hilfsprogramm habe ich mir Netcat ausgesucht. (NC)
    Netcat wird aus dem bash per "echo" Ausgabe verwendet. Problem 1 waren die " (Gänsefüsschen). Echo kann " nur per -e und dann als Hexcode \x22.

    Nun endlich zum Problem:
    Direkt aus der Kommandozeile passiert folgendes:

    Command:
    echo -e "{ \x22id\x22: 0, \x22method\x22: \x22Bat.GetStatus\x22, \x22params\x22: { \x22id\x22: 0 } }"| nc -u -w 1 192.168.178.xyz 30000

    Antwort:
    {
    "id": 0,
    "src": "VenusE 3.0-009b08axyz",
    "result": {
    "id": 0,
    "soc": 47,
    "charg_flag": true,
    "dischrg_flag": true,
    "bat_temp": 24.0,
    "bat_capacity": 2421.0,
    "rated_capacity": 5120.0
    }
    }

    **Wenn ich das ganze nun per blockly über exec ausführe wird das -e ignoriert und als text übertragen. Dementsprechend ist das gesendete UDP Paket

    -e "{ \x22id\x22: 0, \x22met..**

    Das versteht mein Marstek Venus leider nicht und Antwortet mit parse error.
    Hat jemand eine gute Idee wie ich das hinbekomme ?

    Blockly wäre toll zur Not gehts sicher auch anders...
    Vorab vielen Dank

    dks

    M 1 Antwort Letzte Antwort
    0
    • D derkleinschreiber

      Hallo,

      ich möchte gern eine UDP Api Abfrage machen. Leider komme ich nicht weiter.

      --> Ich möchte gern einen UDP Paket absenden und die direkt Antwort empfangen.
      --> Ich muss folgendes als UDP senden: { "id": 1, "method": "Bat.GetStatus", "params": { "id": 0 } }
      --> und dann die UDP Antwort an Blockly bekommen..

      Ich bin besitzer einer Marstek Venus v3 (Batteriespeicher) welches so abgefragt wird. (Es gibt noch keinen Adapter dazu hier.)

      Da blockly kein UPD kann verwende "exec" mit einem externen command und werte die Rückgabe aus.

      Als externes Hilfsprogramm habe ich mir Netcat ausgesucht. (NC)
      Netcat wird aus dem bash per "echo" Ausgabe verwendet. Problem 1 waren die " (Gänsefüsschen). Echo kann " nur per -e und dann als Hexcode \x22.

      Nun endlich zum Problem:
      Direkt aus der Kommandozeile passiert folgendes:

      Command:
      echo -e "{ \x22id\x22: 0, \x22method\x22: \x22Bat.GetStatus\x22, \x22params\x22: { \x22id\x22: 0 } }"| nc -u -w 1 192.168.178.xyz 30000

      Antwort:
      {
      "id": 0,
      "src": "VenusE 3.0-009b08axyz",
      "result": {
      "id": 0,
      "soc": 47,
      "charg_flag": true,
      "dischrg_flag": true,
      "bat_temp": 24.0,
      "bat_capacity": 2421.0,
      "rated_capacity": 5120.0
      }
      }

      **Wenn ich das ganze nun per blockly über exec ausführe wird das -e ignoriert und als text übertragen. Dementsprechend ist das gesendete UDP Paket

      -e "{ \x22id\x22: 0, \x22met..**

      Das versteht mein Marstek Venus leider nicht und Antwortet mit parse error.
      Hat jemand eine gute Idee wie ich das hinbekomme ?

      Blockly wäre toll zur Not gehts sicher auch anders...
      Vorab vielen Dank

      dks

      M Online
      M Online
      MCU
      schrieb am zuletzt editiert von
      #2

      @derkleinschreiber

      Versuch mal

      printf '%s' '{"id":1,"method":"Bat.GetStatus","params":{"id":0}}' | nc -u -w 1 192.168.178.xyz 30000
      

      oder

      printf '%s\n' '{"id":1,"method":"Bat.GetStatus","params":{"id":0}}' | nc -u -w 1 192.168.178.xyz 30000
      

      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

      1 Antwort Letzte Antwort
      0
      • D Online
        D Online
        derkleinschreiber
        schrieb am zuletzt editiert von derkleinschreiber
        #3

        Vielen dank für die Hilfe !
        Hat direkt geklappt. Jetzt kannich den Speicher notdürftig aus Blockly raus steuern.

        Das Problem wurde mit ' ' (einfachen Anführungszeichen) gelöst.

        Hatte ich auch schon probiert nur mit den falschen :-) (Akzent oben rechts auf der Tastatur).
        So ganz verstehe ich nicht warum das geht. Ich hab mal gelernt ' ' = Char / " " = string

        echo oder printf geht übrigens beides mit einfachen Anführungszeiochen und macht den Link viel besser lesbar.

        Ich nutze jetzt exec mit:
        echo '{"id":1,"method":"Bat.GetStatus","params":{"id":0}}' | nc -u -w 1 192.168.178.xyz 30000

        Vielen vielen Dank !

        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

        395

        Online

        32.6k

        Benutzer

        82.1k

        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