MQTT client?

  • hi, I know how to install and configure mosquitto, but I don't know how to link them together through doorpi.ini.
    I'm thinking the following simple scenario:

    • visitor presses button A -> DoorPI publishes MQTT topic (based on button A) to the MQTT server
    • landlord publishes MQTT topic (through MQTT server) -> DoorPI open/closes IO

    thanks

  • Install a mqtt-client:
    "sudo pip install paho-mqtt


    create a script directory:
    "mkdir /home/doorpi/mqtt"


    create the script:
    "nano /home/doorpi/mqtt/ring.py"


    edit your doorpi.ini:



    Code
    1. [EVENT_OnKeyPressed_prodsystem.0]
    2. 10 = take_snapshot:http://localhost:9000/?action=snapshot
    3. 20 = mailto:xxx@xxx.de,Mailversand mit Bild,Das ist das Bild als Mailtext,true
    4. 30 = url_call:http://xxx:xxx/set/javascript.0.DoorPi.States.Ring?value=true&event=doorpi&subscribe=1
    5. add this --->>> 40 = os_execute:python /home/doorpi/mqtt/ring.py

    restart doorpi.

  • Hi katsaplias,
    i have write a MQTT-SingelAction Unit.


    Create the File in the DoorPi SingleAction-Folder(/usr/local/lib/python*/dist-package/DoorPi*/doorpi/action/SingleAction/mqtt.py).


    You can use with:


    [EVENT_OnStartup]
    10=mqtt:192.168.*.*,1883,doorpi/action/startup,true


    or


    [EVENT_OnKeyPressed_prodsystem.0]
    10=mqtt:192.168.*.*,1883,doorpi/action/ring1,true,false


    or


    [EVENT_****]
    10=mqtt:192.168.*.*,1883,doorpi/message,this is a message from doorpi !


    ---------------------------------------------------
    mqtt:hostname,port,message,kind1,kind2


    action with kind2 changes after 2 seconds kind1 with kind2
    action without kind2, only sends kind1

    Gruß
    Wal


    Kaum macht man es richtig, funktioniert es auch !

    Einmal editiert, zuletzt von Wal ()

  • Hallo Wal,


    vielleicht ist das Thema ja noch bei Dir im Fokus:


    Wie würde das für den Rückweg aussehen? Also das 2. Szenario, dass der Themeneröffner genannt hat

    - die Hausautomation feuert z.B. ein /doorpi/cmd/set/open mit payload=1

    - doorpi reagiert darauf und öffnet (oder zieht das Relais für 3 sek) und

    - sendet vielleicht ein passendes Signal zurück an den MQTT-Server, z.B. /doorpi/state/relais mit payload=1 oder etwas ähnliches?


    Gruß

    Kai

  • Bin gerade nicht im Bilde, wie aktuell die verwendete paho mqtt ist. Dabei ist aber ein Beispiel für einen einfachen clienten. Meldest dich zu Beginn an und abonierst dann Topics für zB jeden angelegten Input für das Keyboard.. Zusätzlich startest beim Laden des Keyboards nen Thread, der auf neues wartet. Wenn was neues kommt (on_message), löst du das Event für einen Input (des Keyboards) aus. Entsprechend kannst du Output Pins des Keyboards nutzen um ein Topic zu publishen (oder wie das bei Mqtt heißt).


    Hab leider momentan nicht die Zeit dir das zusammen zu setzen. Sollt aber recht easy gehen.