Wie per MQTT Scripte ausführen?

  • Hallo,

    ich habe folgendes Problem. Derzeit habe ich eine Rolladensteuerung über einen Raspberry laufen. Rolladen hoch/runter funktioniert jeweils über ein hoch.cgi und runter.cgi Script welches über einen Webserver ausgeführt wird. Kann also einfache über eine Adresse den Button hoch oder runter klicken.

    Nun habe ich auf einem anderen Raspberry einen ioBroker laufen. Da ich das ganze getrennt lassen möchte würde ich gerne vom ioBroker mittels MQTT einfache Befehle an den Rolladen Raspi senden der dann diese jeweiligen Scripte ausführt und eine kurze Rückmeldung gibt.

    Heißt also ioBroker sendet Rolladen rauf per MQTT -> Rolladen Raspi soll daraufhin das hoch.cgi ausführen und das hoch.cgi soll Rückmeldung an ioBroker geben das es ausgeführt wurde

    Könnt ihr mir helfen wie ich das beim Rolladen Raspi Programmiere? Bin da leider nicht so der Profi :(

  • Das geht mit MQTT alleine gar nicht.

    MQTT ist ein Message-Broker, ein Tool, an das Programme Nachrichten Senden, die von anderen Programmen 'abonniert' werden können.

    Du braucht also ein Programm, dass die Nachrichten 'Jalousie hoch' und Jalousie runter' abonnieren.

    Dafür musste du den MQTT-Spezifikationen entsprechend eine Nachrichten-Queue einrichten, in welche diese Nachrichten geschickt werden.

    Du kannst diese Queue so einstellen, das sie nur einmal ausgelesen werden können, oder dann entsprechend der Abfrage der letzte Zustand mehrfach ausgelesen werden kann.

    Das Programm, dass diese Nachrichten abonniert starte dann die Funktion entsprechend des letzten Eintrages.

    Computer ..... grrrrrr

  • Hierfür kann man einen MQTT Commander programmieren oder einen fertigen so konfigurieren, dass es das macht. Dieser wird dann auf dem Rollanden-Pi gestartet und er verbindet sich mit dem entfernten Broker, wartet dort auf die Änderung eines Topics und löst dann eine AKtionaus, also z.B. ein Shell-Kommando absetzen. Diese Commander können kleine python-scripte sein, oder Programme in beliebiger Programmiersprache, auch BASIC ( ;) ).

  • Hallo,

    Quote

    über ein hoch.cgi und runter.cgi Script welches über einen Webserver ausgeführt wird.

    Echt CGI? Das ist seit > 10 Jahren für Python veraltet. Stand der Dinge ist WSGI, da ist alles einfacher, flexibler, besser.

    CGI will man nur benutzen, wenn der Server partout kein WSGI erlaubt oder man masochistisch veranlagt ist *SCNR*


    Idee zur Umsetzung: schreib' deinen Webteil auf WSGI um - was ziemlich simple ist mit einem WSGI-Framework wie Flask oder Bottle und richte zusätzliche Routen ein, an die der "MQTT Commander" eine GET-Request schicken kann, der die Aktion "Rolle hoch" oder "Rolle runter " auslöst.

    Gruß, noisefoor

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!