Shelly mit node red steuern

  • Hallo,

    habe seit ein paar Tagen einen Shelly 1PM 2. gen, den ich gerne mit Node Red steuern möchte. Habe hierzu einige Beiträge gefunden. U.a:

    Shelly 1 & 1pm example api flows (flow) - Node-RED

    Ich habe den Flow in mein Node Red auf dem Raspi4 kopiert und die Shelly-IP und Shelly-ID angepasst.

    Die MQTT Verbindung hat nach einigem hin und her geklappt und es lässt sich damit auch der Status, den der Shelly jede Minute schickt im Broker empfangen.

    Ich schaffe es aber nicht über MQTT den Shelly ein- und auszuschalten.

    Habe in der Inject Node schon alles versucht:

    msg.topic = shellies/shelly1pm-441793cfe6a8/relay/0/command

    msg.payload = {"relay":0,"on":1} oder {"relay":0,"on":"true"} oder {"relay":0,"on":true}, oder ....

    Auf der anderen Seite kann ich über http den Shelly schalten, ich kann aber z.B. nicht die Updateperiode ändern, oder den Shelly booten. Die zugehörige Function Node sieht so aus (1:1 aus dem oben genannten Beispiel kopiert, nur die IP-Adresse geändert):

    var x = msg.payload;
    var IP = "192.168.178.32";

    msg.url = "http://" + IP + "/settings";

    msg.payload = "mqtt_update_period=" + x;
    return msg;

    Ich bekomme immer vom http-Request Node die Fehlermeldung:

    "JSON-Parse-Fehler"

    Und last but not least kann ich mit dem Shelly Switch auch nur den Status abfragen, aber den Shelly nicht schalten.

    ich vermute, es liegt nur ein Kleinigleiten, aber ich komme alleine nicht weiter.

    Ich hoffe man kann mein anfängerhaften Erklärunegn verstehen und es kann mir jeamnd helfen!

    Grüße

    Sputnick

  • Ich glaube, dass du ein grundsätzliches Verständnisproblem hast. Du benötigst die MQTT Out Node, welcher den Shelly anspricht.

    Wie fragst du mit dem Shelly Switch ab? Was soll das sein? Nutzt du die Shelly Nodes? Ich nutze zur Abfrage MQTT IN, bzw. MQTT JSON.

    Leider habe ich kein Gen2, um alle deine Aussagen nachvollziehen zu können.

  • Sorry, hatte ich vergessen zu erwähnen. Ich nutze MQTT OUT Node um den Shelly anzusprechen. Und den MQTT IN um die Nachrichten vom Shelly zu empfangen. Das funktioniert auch. MQTT JSON kenne ich (noch) nicht.

    Der Switch (aus der Palette node-red-contrib-shelly der Node shelly-gen2) bekommt im einfachsten Fall einen timestamp. Ist aber egal, was man ihm gibt. Es kommt immer nur der Status. Soll vielleicht so sein, hätte aber erwartet, dass man auch schalten kann.