DoorPi-Erweiterungen

  • Um nicht lange suchen zu müssen, habe ich meine Erweiterungen hier mal zusammengefasst.
    Für MQTT : sudo pip install paho-mqtt


    doorpi.zip


    Keyboards:
    from_nextion.py - zum ansteuern des Nextion-Displays
    from_url.py - einfache Ausführung von Event's über eine Url
    Actions:
    mqtt.py - senden von MQTT-Nachrichten an z.B. Smarthome-Servern
    In der mqtt.py User und Passwort anpassen.


    Beispiel doorpi.ini


    Aufbau MQTT:
    10 = mqtt:192.168.***.***,1883,doorpi/action/ring1,true,false
    Befehl:MQTTServerHostname,MQTTServerPort,MQTTNachricht,Variable1,Variable2


    Wird Variable2 weggelassen, wird nur Variable1 gesendet(z.B. StartUp DoorPi).
    Mit Variable2 wechselt der Status von Variable1 nach 2 sek. auf Variable2 (z.B. beim Klingeln wechseln von true auf false)


    Beispiel Nextion Url:


    Code
    http://192.168.***.*/control/trigger_event?event_name=OnKeyPressed_web.keypad&event_source=doorpi.keyboard.from_url

    rufe ich die Seite 1 vom Nextion auf.
    Die erstellten Event's in der doorpi.ini, kann man unter der Url : 192.168.***.***/dashboard/pages/status.modules.eventhandler.html auslesen.

  • Hallo Wal,


    das sieht genauso aus wie das was ich suche. Ich versuche mit einem virtuellen Ausgang von meinem Smart Home eine bestimmte Seite am Nextion aufzurufen. Ich kann http Befehle senden.


    Was ich in dem Code nicht verstehe, ist wo definiert wird welche Seite angesprochen wird! Kannst du das erläutern?


    Danke

  • Hast du dir schon die Befehle vom Nextion angeschaut ? Da steht das mit page nr die Seite aufgefufen werden. Also, mit dem Editor z.B. page0 und page1 erstellen und einfach wie oben aufrufen.

  • Moin, danke für die Antwort. Eventuell reden wir aneinander vorbei oder ich verstehe es nicht!

    Ich möchte eine Seite von extern aufrufen. Ich habe mit dem Nextion Editor 9 pages erstellt. Wenn ich durch klicken auf einen Button den Befehl page eingebe kann ich die Seiten wechseln. Nur von Extern ist es mir nicht klar.


    Du schreibst mit der URL


    http://192.168.***.*/control/trigger_event?event_name=OnKeyPressed_web.keypad&event_source=doorpi.keyboard.from_url


    rufts du Seite 1 auf! Das ist mir nicht klar woher DoorPi weis das es die Seite 1 ist!

  • Durch die doorpi.ini oben:

    Code
    [keyboards]
    next = nextion
    web = url
    
    [next_OutputPins]
    page 1 = page 1
    
    [web_InputPins]
    keypad = out:page 1,1

    Mit der URL wird der web_InputPin keypad aufgerufen, der wiederum den next_OutputPin page 1 zum Nextion absetzt.

  • Hallo Wal,


    danke für die Unterstützung. Leider geht es nicht bei mir. || Irgendwas mache ich wohl noch falsch.

    Ich gehe davon aus das ich die URL in Chrome eingeben kann und durch drücken von Enter wird die Aktion ausgelöst?

  • Code
    [onboardpins_OutputPins]
    ### Relais 0 für anschalten der IR-LED durch BWM ; Relais 1 soll später den Verstärker EIN und aus schalten (jetzt noch zum TESTEN auf DOOR)
    0 = Verstärker
    1 = IR-Relais
    7 = blinking_led

    Setze mal deine blinking_led, das ist erst mal ein Fehler den ich auf den ersten Blick sehe und teste noch mal. Ich sehe im Log auch nicht, das du einen Seitenwechsel mit DTMF oder Url anstößt.

    • Offizieller Beitrag

    Ein von dir verwendetes Keyboard scheint keine Funktion status_input zu implementieren. Sollte es aber. Zu deiner Config mal ein paar Sachen:

    Code
    [DTMF]
    ### Das soll ueber einem Tastendruck am Telefon eine Seite vom Nextion öffnen 
    "#0#" = out:Oeffner,0,1,5 ### nicht getestet nur uebernommen
    "#3#" = out:page 3,1 ### Raute-3 öffnet Seite 3
    "#5#" = out:page 5,1 ### Raute-5 öffnet Seite 5
    "#7#" = out:page 7,1 ### Raute-7 öffnet Seite 7
    "#8#" = out:page 8,1 ### Raute-8 öffnet Seite 8
    "#404#" = os_execute:sudo shutdown
    "#500#" = os_execute:sudo reboot

    Kommentare in einer Aktion mag DoorPi nicht. (s. Fehlermeldungen im Log)

    Code
    [DTMF]
    ### Das soll ueber einem Tastendruck am Telefon eine Seite vom Nextion öffnen 
    "#0#" = out:Oeffner,0,1,5
    "#3#" = out:page 3,1
    "#5#" = out:page 5,1
    "#7#" = out:page 7,1
    "#8#" = out:page 8,1
    "#404#" = os_execute:sudo shutdown
    "#500#" = os_execute:sudo reboot


    Und dann bei den Input-Pins:

    Code
    [onboardpins_InputPins]
    ###Taster 1 öffnet seite 1 ; Taster 2 öffnet seite 2 ; Pin 6 weckt Bildschirm auf und schaltet IR-Relais an ; Input 7 ist der Alarm Schalter (Gehäuse geöffnet)
    1 = out:page 0,1
    2 = out:page 1,1
    6 = IR-Relais
    7 = Alarm

    Was möchtest du damit erreichen? Das bennenen eines InputPins ist nicht möglich (und schon garnicht bei In-&Output den selben Namen) aber auch eigtl nicht nötig. (stattdessen sleep:0, wenn du nichts machen willst)

    Code
    [onboardpins_InputPins]
    ### Taster 1 öffnet seite 1 ; Taster 2 öffnet seite 2 ; Pin 6 weckt Bildschirm auf und schaltet IR-Relais an ; Input 7 ist der Alarm Schalter (Gehäuse geöffnet)
    1 = out:page 0,1
    2 = out:page 1,1
    6 = out:IR-Relais,1,0,60
    7 = sleep:0

    Deine Read&Write-Permissions sind auch nicht korrekt.

  • Hi,


    leider fehlt mir das Fachwissen, daher die Fehler. Ich habe mir alles hier zusammengesucht! Ich freue mich sehr über die Hilfe.


    Das mit dem DTMF habe ich geändert und verstanden.


    [onboardpins_InputPins] 1 und 2 sind noch alte Sachen wo ich mit den Tasten auf dem Piface 2 getestet habe was passiert. Das habe ich jetzt gelöscht.

    Input Klemmstelle 6 soll vom Bewegungsmelder aktiviert werden (geht leider noch nicht) und Input 7 von einem Taster der das Gehäuse überwacht. Den Input 6 habe ich nach deinem Beispiel geändert.


    Ich rufe zwischendurch immer mal wieder die URL über den Browser auf aber es geht noch nicht.

    Wie immer habe ich das Logfile mit angehangen.


    Danke schon einmal

  • Ohhh man. Da versuche ich seit Tagen die Page 8 per DTMF aufzurufen und es geht nicht! Dank dir sehe ich das die unter


    [nextion_OutputPins] fehlt. Danke


    Jetzt "müssen" ;) wir "nur" noch das mit der URL lösen dann bin ich richtig happy.

    • Offizieller Beitrag

    Also in der from_url.py fehlt die status_input (wenn du die von Wal genommen hast... darüber meckert DoorPi):

    Python: from_url.py
        def status_input(self, input_pin):
            logger.debug("status_input for tag %s", input_pin)
            return (input_pin == self.last_key)

    Das noch am Ende einfügen (hinter 38), dann sind nochmal ein paar Fehler weg.


    Also mit:

    Code
    sudo systemctl stop doorpi.service

    stoppst du den DoorPi-Service. Dann startest du DoorPi in der Konsole (dabei musst du deine Config-Datei mit übergeben. Hier jetzt mit dem Standardverzeichnis) im debug-Modus.

    Code
    sudo doorpi_cli --debug --configfile /usr/local/etc/DoorPi/conf/doorpi.ini

    Die Log-Datei löschen? Einfach die Datei oder den Inhalt löschen :D