Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie würdet ihr dies in sh-ng einbinden (SmartLock)?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • henfri
    antwortet
    Hallo -und ein frohes neues Jahr!

    vielen Dank! Das hilft mir weiter.

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi Hendrik,

    Zitat von henfri Beitrag anzeigen
    Ich möchte ja auf einem KNX-Taster oder der Visu den Status des Schloss dargestellt haben. Dabei ist es aber wichtig, dass ich den tatsächlichen Status bekomme und nicht einfach das, was ich zuletzt gesendet habe.
    Das kannst Du mit KNX (also auf dem KNX-Taster) machen, deswegen gibt es ja verschiedene KO für "Schalten" (bei Dir hier Action) und "Status". Die Taster-LED lässt Du auf Status hören und Action verbindest Du mit dem Schaltobjekt des Tasters. Hier hast Du also keine Probleme.

    Zitat von henfri Beitrag anzeigen
    Darüber hinaus brauche ich genau ein Item.
    Hier zeigt es sich, dass die SmartVisu das eigentliche Problem ist. Die Widgets dort sind nämlich nicht Statusorientiert. Deswegen brauchst Du ein Item, nur für die SV.

    Du brauchst also nicht wirklich ein Item, sondern ein Widget, dass sowohl Action wie auch Status bekommt, dass über Action schaltet und das zusätzlich noch den Status anzeigt. Dazu hatte ich im SV-Forum schon mal diese Diskussion gesehen: https://knx-user-forum.de/forum/supp...tor-multistate und es gibt auch diesen Feature-Request: https://knx-user-forum.de/forum/supp...nd-status-mqtt. Die gehen in die Richtung, die Du möchtest. Für Deinen konkreten Fall kannst Du Dir ja ein device-Widget basteln.

    In shNG.py funktioniert das IMHO so, wie es sollte (mit 2 Items).

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    ich habe gerade noch etwas weiter gedacht:
    Ich möchte ja auf einem KNX-Taster oder der Visu den Status des Schloss dargestellt haben. Dabei ist es aber wichtig, dass ich den tatsächlichen Status bekomme und nicht einfach das, was ich zuletzt gesendet habe. Darüber hinaus brauche ich genau ein Item. Aktuell habe ich ja drei: Eins für Action, eins für status. und einmal das übergeordnete item:

    Code:
    B:
      Hintertuer:
        Schloss:
          type: bool
          eval: "0 if (sh..Status() =='UNLOCKED' or sh..Status() =='OPENED') else 1"
          eval_trigger: ..Status()
          enforce_updates:true
          Status:
            type: str
            mqtt_topic_in: SmartlockHintertuer/status
            enforce_updates:true
          Action:
            type: str
            mqtt_topic_out: SmartlockHintertuer/action
            eval: "'unlock' if sh...Schloss() ==0 else 'lock'"
            eval_trigger: ...Schloss()
            enforce_updates:true

    Ich möchte ja in Zukunft mit einem B.Hintertuer.Schloss(1) den Schließvorgang auslösen. Das sollte mit dem eval klappen. Allerdings ist jetzt sofort B.Hintertuer.Schloss() ==1.
    Ich hätte es lieber, dass B.Hintertuer.Schloss() nach dem Senden des Kommandos 0 ist und erst von einer erfolgreichen Rückmeldung vom Schloss (über B.Hintertuer.Schloss.status()) zu 1 wird.

    Wie mache ich das am Besten?

    Gruß,
    Hendrik
    Zuletzt geändert von henfri; 31.12.2018, 14:13. Grund: warum war denn hier die Formatierung wieder kaputt?

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Danke!

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich finde die evals nicht besonders übersichtlich. Das geht sicherlich simpler.

    Wenn Du Quotes in den evals nutzt, musst Du den gesamten eval Ausdruck in Double-Quotes setzen, sonst versucht yaml das zu interpretieren, und es wird nicht komplett als String an shNG übergeben.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    das habe ich jetzt mal probiert:
    Code:
    B:
      Hintertuer:
        Schloss:
          type: bool
          eval: 0 if (sh..Status() =='UNLOCKED' or sh..Status() =='OPENED') else 1
          eval_trigger: ..Status()
          Status:
            type: str
            mqtt_topic_in: SmartlockHintertuer/status
          Action:
            type: str
            mqtt_topic_out: SmartlockHintertuer/action
            eval: 'open' if sh...Schloss() ==0 else 'close'
    Mit Hintertuer.Schloss() möchte ich den Status zeigen und ändern. Status und Action sind Hilfsitems.
    Das zweite eval (also das bei Action) funktioniert nicht. Es scheint einen Syntaxfehler bei Yaml zu geben. Ich sehe den aber nicht.

    Und ich habe auch gleich noch eine Frage: Ich muss ja verhindern, dass ich einen Zirkelbezug erzeuge (Status setzt 0 (offen)) und löst damit noch ein Action (öffnen) aus. Geht das?

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Dann musst Du das über ein Hilfsitem in shNG lösen

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    nein, das geht leider nicht.
    Das Kommando wird direkt an das Schloss weitergeleitet und muss "lock" oder "open" heißen:
    https://github.com/oyooyo/keyble/blo...martlock.sh#L7

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Da Du die MQTT Telegramme selbst auf Deinem Pi Zero definierst, könntest Du wenn Dich nur locked/unlocked interessiert ein Telegramm SmartlockHintertuer/lockstatus definieren, welches als Payload 0 / 1 bzw. false / true in der Payload sendet.

    Dann kannst Du das Item in snNG einfach als type: bool definieren. Das Plugin führt ein Casting durch, wenn der Typ nicht foo ist.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    das Schloss ist jetzt per MQTT steuerbar:
    Code:
    SmartlockHintertuer/action lock
    SmartlockHintertuer/action open
    
    SmartlockHintertuer/status MOVING
    SmartlockHintertuer/status OPENED
    SmartlockHintertuer/status UNLOCKED
    Jetzt bin ich unschlüssig, ob ich action auf 1/0 mappen sollte, oder mit open/close arbeiten sollte. Ich tendiere zu ersterem. Was meint ihr?
    Wo würdet ihr das Mapping machen. Im MQTT-Plugin habe ich dazu nichts gesehen --> mit einem Eval und Hilfsitem?

    Beim Status interessieren mich eigentlich nur Locked/Unlocked. Dann könnte ich auch einfach mappen.

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • henfri
    hat ein Thema erstellt Wie würdet ihr dies in sh-ng einbinden (SmartLock)?

    Wie würdet ihr dies in sh-ng einbinden (SmartLock)?

    Hallo,

    wie würdet ihr https://knx-user-forum.de/forum/%C3%...mqtt-steuerbar in Smarthome-ng einbinden?
    Senden geht schon per mqtt. Aber ich hätte eigentlich auch gerne den Status.
    Es gibt ja eine js-API, die man nutzen könnte -da fehlen mir aber Fähigkeiten. Ansonsten wäre mein Vorschlag wie hier beschrieben einfach die Nuki Api zu emulieren. Dann könnte man das vorhandene Smarthome-NG Nuki Plugin nutzen.

    Ich habe vor, keyble (das ist die Software die das Schloss steuert) auf einem RasPi Zero laufen zu lassen.

    Gruß,
    ​​​​​​​Hendrik
Lädt...
X