MQTT client?

  • It has been discussed in the forum by others but I don't have any clear answer.
    Any luck of integrating DoorPi with the MQTT (Message Queuing Telemetry Transport) protocol?
    That will be very handy when you want integrate DoorPi to a Home Automation system like OpenHAB, Home Assistant or any platform that uses communication to a MQTT server.


    thanks

  • 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
    [EVENT_OnKeyPressed_prodsystem.0]
    10 = take_snapshot:http://localhost:9000/?action=snapshot
    20 = mailto:xxx@xxx.de,Mailversand mit Bild,Das ist das Bild als Mailtext,true
    30 = url_call:http://xxx:xxx/set/javascript.0.DoorPi.States.Ring?value=true&event=doorpi&subscribe=1
    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

  • 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

    • Offizieller Beitrag

    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.