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. WebService der einen MQTT Befehl sendet und auf Antwort wartet?

NEWS

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

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

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

WebService der einen MQTT Befehl sendet und auf Antwort wartet?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 238 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.
  • E Offline
    E Offline
    Eissbear
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich bin noch nicht so unglaublich tief im Thema drin, habe aber durchaus schon gut was zum laufen gebracht und soviel Zeit investiert, dass ich mir denke "Einmal kurz die Profis fragen ist schon ok.".

    Kurz das vereinfachte Problem: Ich brauche am besten einen MQTT Node welcher einen Eingang hat und einen Ausgang.

    Ich habe ein kleines IoT Szenario mit einer Waage aufgebaut, hier ist eine NodeMcu an der RS232 Schnittstelle, welcher das Gewicht dauerhaft ausliest und in einer temporären Variable speichert (Dieses soll nicht permanent an den MQTT gesendet werden, um den Traffic klein zu halten).

    Wird in der Topic "Waage1_GW" der Befehl "WEIGH" gepublished, dann schreibt die NodeMcu das aktuelle Gewicht in die Topic "Waage1".

    Das ganze möchte ich jetzt als WebService konsumieren. Das habe ich auch schon zum laufen gebracht, aber wie ich finde nicht ganz sauber.

    Wenn ich den WebService aufrufe, dann wird der Befehl in Waage1_GW gesendet. Parallel habe ich einen Flow, der auf die Topic Waage1 lauscht und das Ergebnis in einer Flow Variable speichert:

    flow.set('weight', msg.payload);
    

    Wieder in dem Flow des WebService habe ich nun ein Delay eingebaut (Das finde ich eigentlich nicht schön) und dann lese ich die Variable aus und gebe diese als Response zurück und mache Sie leer, damit beim nächsten mal nicht der alte Wert gefunden wird.

    var x= flow.get('weight');
    flow.set('weight', '');
    msg.payload = x;
    return msg;
    
    

    Theoretisch geht es, ich verliere aber ja Zeit mit dem Delay. Kann ich irgendwie eine Do-While Schleife aufbauen, damit er in der Function wartet, bis das Ergebnis da ist?

    Habe auch schon einen Switch mit "msg.payload is null" und "is not null" eingebaut aber der will auch nicht so recht. Er wartet zwar auf das Ergebnis, aber sendet den HTTP Response einfach sofort.

    Oder hat noch jemand eine bessere Idee? MQTT Node mit Input und Output wäre halt perfekt.

    Danke für eurer HIlfe!

    Gruß Eissbear

    1 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      rewenode
      schrieb am zuletzt editiert von
      #2

      Hi,

      also ehrlich gesagt, hab ich nicht alles verstanden, was du geschrieben hast. Wenn ich es aber richtig interpretiere, brauchst du vlt. eine asynchrone Funktion?

      https://nodered.org/docs/writing-functions

      https://github.com/Raynerv/node-red-contrib-async

      Loopen mit functions-node geht auch. Sollte dann eigentlich auch asynchron sein.

      1 Antwort Letzte Antwort
      0
      • E Offline
        E Offline
        Eissbear
        schrieb am zuletzt editiert von
        #3

        Hi rewenode,

        Asynchron klingt erstmal gut. Ich checke das mal nachher.

        Webservice wird aufgerufen

        => Sendet Befehl an MQTT && läuft in einen 1 Sekunden Delay

        => Fragt Variable aus dem Flow Speicher ab

        => füllt den Message Payload

        => sendet HTTP Response

        Parallel läuft ein MQTT Input der die Variable in den Flow Speicher legt, das sollte während des 1 Sekunde Delays passiert sein.

        Gruß Eissbear

        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

        967

        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