Beiträge von nrtkin

    Hallo Zusammen,


    hier im Post habe ich nun eine mögliche (fast) Lösung mit einer Shelly i3/i4 eine Tuya LED über Homebridge ein und auszuschalten per curl

    - authorization vom QR-Code

    - man muss wissen welche iid der Schalter für ein/aus ist. Falls man eine RGBWW Lampe hat, gibt es mehrere iid's zu den einzelnen Einstellparametern


    Code
    einschalten
    curl -X PUT http://HomebridgeIP:port/characteristics --header "Content-Type:Application/json" --header "authorization: 081-15-123" --data "{\"characteristics\":[{\"aid\":2,\"iid\":10,\"value\":1}]}"
    
    ausschalten
    curl -X PUT http://HomebridgeIP:port/characteristics --header "Content-Type:Application/json" --header "authorization: 081-15-123" --data "{\"characteristics\":[{\"aid\":2,\"iid\":10,\"value\":0}]}"


    Jetzt weis ich nicht ob man mit den neuen Shelly plus sich einen Script bauen kann,

    der dann diesen curl Befehl über Homebridge an die Tuya sendet?



    Wenn man in den Browser folgendes eingibt (die aid und iid muss bereits bekannt sein)

    Code
    http://hb-ip:port/characteristics?id=2.10

    erhält man folgenden Status

    Code
    {"characteristics":[{"aid":2,"iid":10,"value":0}]}


    Jetzt ist die Frage ob man mit der URL auch die Authorization und ein set value auf 1/0 hinbekommt

    Also sowas wie hier

    Code
    http://hb-ip:port/characteristics?authorization=081-15-123&id=2.10&value=1


    Quellen:

    https://github.com/homebridge/homebridge/issues/506



    Hier habe ich das mit dem Status gefunden

    https://github.com/KhaosT/HAP-…c3b/lib/HAPServer.js#L650

    Code
    // Extract the query params from the URL which looks like: /characteristics?id=1.9,2.14,...
    // requestData is a JSON payload like { characteristics: [ { aid: 1, iid: 8, value: true, ev: true } ] }

    Vielleicht kennt sich jemand mit sowas aus ;)


    Viele Grüße

    Hallo Stefan,


    ich habe folgendes in die /etc/default/homebridge geschrieben

    Code
    # If you uncomment the following line, homebridge will log more
    # You can display this via systemd's journalctl: journalctl -f -u homebridge
    DEBUG=*

    damit ich bisschen mehr sehe wie die Befehle intern verarbeitet werden.


    Das Problem ist, der hat mir innerhalb von paar Sekunden mit einer >3 GB großen Log Datei meine Platte voll geballert ;)


    und der Befehl mit

    Code
    journalctl -f -u homebridge

    hat mir nur folgendes ausgespuckt, ich dachte ich kann den Log dann mit Putty mir live anschauen.



    Gibt's da eigentlich verschiedene Log Levels zum einstellen? Habe dazu nichts gefunden.


    Inzwischen ist der Log bei 6 GB ;) und mitlesen kann man da nicht weil das in Millisekunden durchrattert


    Jetzt sehe ich es, Ich glaube das liegt am native Format oder?

    Ich bin jetzt ein bisschen durcheinander. Wenn ich es richtig sehe, greifst du über homebridge-config-ui-x auf deine Homebridge zu. Nicht die Homebridge bietet dir Swagger, sondern homebridge-config-ui-x.

    Deine Vermutung ist richtig ;)

    Jetzt habe ich es glaube ich auch begriffen. Die Homebridge läuft bei mir auf Port 51364 und Homebridge-UI-X auf Port 8581.



    Eine erfreuliche Nachricht habe ich ;)


    Mit diesem Befehl funktioniert es (true=einschalten / false=ausschalten) mit Dimmen und so habe ich noch nicht ausprobiert.

    Code
    curl -X PUT http://HomebridgeIP:port/characteristics --header "Content-Type:Application/json" --header "authorization: 081-15-123" --data "{\"characteristics\":[{\"aid\":2,\"iid\":10,\"value\":true}]}"


    Man muss vorher herausfinden welche aid und iid der Schalter den man steuern möchte in der accessories Liste hat.

    Das geht entweder über Swagger UI, dass ja wie du geschrieben hast von der Homebridge-UI-X bereitgestellt wird also dann http://Homebridge-UI-X_IP : Port/swagger und dann unter Accessories GET /api/accessories dort erhält man eine Liste der Geräte mit den ID's.


    Oder über shell/putty . Das ist aber nicht so leserlich weil alles in einer Zeile ausgedruckt wird.

    Code
    curl -X PUT http://10.1.1.166:51364/accessories


    Was ich schade finde ist, dass man nicht einfach mit

    serviceCharacteristics + description + value

    den Link bauen kann, weil das irgendwie im Code fest definiert ist.

    Vorteil wäre, man müsste dann nicht nach den aid iid suchen wenn man ein neues Gerät hinzufügen möchte.

    Natürlich darf es dann keine doppelten Namen geben


    Gefunden habe ich es durch deine Hilfe/Anregung unter folgenden Links


    https://github.com/homebridge/…06#issuecomment-387980947


    https://github.com/KhaosT/HAP-…c3b/lib/HAPServer.js#L700


    Jetzt muss ich das nur noch im Shelly zum Laufen bringen ;)


    Danke an die Beteiligten für die Unterstützung


    Viele Grüße

    PS: Sorry, dass ich vom Hauptthema in diesem Thread abgelenkt habe

    Auf einer Shell müsstest du mit einem Befehl ähnlich wie dem folgenden etwas erreichen können:


    curl -H "Content-Type: application/json" -X PUT -d '{"characteristicType":"On", "value": true}' http://192.168.1.22:1234/api/acessories/8687923982399


    Den könnte man dann mit homebridge-cmdswitch2 aufrufen.


    bekomme die Meldung

    Code
    {"statusCode":401,"message":"Unauthorized"}


    Irgendwie muss man sich mit einem User an dieser API-Schnittstelle anmelden.


    Ich habe mir die curl --help angeschaut mit -u user:passwort habe ich es auch versucht

    Code
    curl -X PUT -H "Content-Type: application/json" -d '{"characteristicType":"On", "value":"true"}' -u 'shellyuser:123456' http://192.168.1.22:1234/api/accessories/8687923982399


    Jetzt weiss ich nicht ob ich gerade direkt auf die API von Homebridge zugreife?

    Obwohl eigentlich schon, weil mit http://192.168.1.22:1234/swagger komme ich ja auf den Swagger-UI für die Homebridge UI API Reference. Also ist swagger nur eine grafische Darstellung der Homebridge-API ?


    Dann ist es ja im ersten Moment eine Anmeldung auf die Homebridge.

    Habe ich das so richtig verstanden?? ;)


    Aber was ist das dann mit der "Authorization" Bearer?

    Da gibts auf der swagger documentation folgendes dazu

    https://swagger.io/docs/specification/authentication/

    Hallo @Benzman81


    kann ich mit deinem Plugin diesen Vorgang, den ich auf dieser swagger Seite durchführen kann,




    als button konfigurieren?

    Ich habe schon einiges ausprobiert aber bekomme es nicht hin.


    Was ich erreichen möchte,

    ich habe eine Tuya LED die ich mit einer Shelly i3 (http-Befehl senden an Homebridge bzw dein Plugin) mit einem Wandtaster ein- ausschalten möchte.


    Die Tuya LED kann ich mit der Shelly nicht direkt per http-Befehl ansteuern, deshalb über Homebridge und dein Plugin.


    Ich habe das Plugin so verstanden, dass ich ein in HB vorhandene accessorie über einen http-Befehl ein- ausschalten kann.


    Über swagger habe ich von dem zu steuernden Gerät folgende Informationen:

    Code
    "uniqueId": 123456
    "aid": 2
    "iid": 8
    "uuid":
    "characteristicType": "On"
    "value": "false"

    Ich habe es zuerst mit folgender URL ohne ein Plugin versucht, also direkt die API von HB ansprechen.
    (Ob die URL so richtig aufgebaut ist ?)

    Code
    http://user:[email protected]:8081/api/accessories/123456?characteristicType=On&value=true

    Da scheiterte ich an der Authentifizierung, weil die Befehle unter http://ip-der-hb:port/swagger/ erst nach einem Login funktionieren. Ich dachte, dass es mit der Basic Authentication user:password@ in der URL funktionieren könnte doch leider nicht.


    Mit dem Plugin unter lights habe ich folgendes versucht,

    Code
    On URL
    http://192.168.1.100:8081/api/accessories/123456
    On Method
    Put
    On Body

    Kann es sein, dass das Plugin für was anderes gedacht ist?


    Frage hierzu,

    kann es sein, dass sich der Ordnerpfad geändert hat?

    Bei mir auf dem raspi mit pios finde ich den homebridgeordner hier

    /var/lib/homebridge/persist

    muss ich dann den hier angeben?

    Danke

    Kann sein dass die identifier in dieser .Cash Datei gespeichert werden? Würden die sich ändern wenn man den Cash löscht?


    Du meinst das api-Befehl für die Tuya Lampe

    das von HB an das Gerät gesendet wird.

    Hast du recht das wäre stabiler falls HNO down ist.


    Findet man sowas auch mit wireshark heraus?

    Oder vielleicht in der Log von HB wenn ich wüsste wie man einen debug Modus bei hb einschaltet müsste es ja da drin stehen welcher Befehl abgesendet wird oder nicht?

    Genau davor stehe ich jetzt auch ;)


    Ich möchte ja mit einem i3 oder i4 mit einem der Button's unter "..short pressed.." einen http-Befehl an die

    Homebridge oder an das Plugin senden, der dann die Tuya LED über HomeBridge einschalten soll.


    Mit dem Programmable HTTP Switch muss man ja folgendes eingeben

    Accessories:

    Name: irgend ein Name

    Identifier: aus der API ?? hier habe ich den Namen benutz den ich für die LED eingetragen habe

    Button:

    Name: Button 1

    Identifier: den Schaltbefehl im Log "20":true


    hat aber nicht funktioniert ;)


    Das müsste ja sowas wie ein Umlenker sein.

    Der Button -EIN, der mit dem Plugin erstellt wird müsste mit einem http-Befehl von Shelly ansprechbar sein

    und dann die Aktion dazu ausführen. Also den Befehl senden, wie wenn man auf der HomeBridge UI unter Geräte auf den Button drückt.


    Woher bekommt man die Identifier heraus?

    Muss man da im Code des Plugins suchen, aber kann ja nicht sein.

    Das müssen doch irgendwelche ID's sein, die HB selber erstellt.

    Bekommt man sowas auch aus dem Log heraus?


    Ich habe auch was von mqtt-explorer gelsen aber im Moment wird doch auch kein mqtt benutzt und ich kann den Knopf in HB benutzten



    Wenn ich mir jetzt was wünschen dürfte ;)

    Ein Plugin mit dem man einfach einer der vorhandenen Geräte aus der Geräteliste auswählt und

    sagt, bei diesem Gerät kann man das und das Steuern und ich möchte jetzt per http-/mqtt-/ oder was auch immer/ -Befehl den Knopf steuerbar machen.

    Danke für die Antworten und bitte um Verständnis für Nachfolgenden Fragen:

    Ja. Ein Server ist eh nur ein Stück Software. Einfach mosquitto installieren und schon bist du fertig.


    Der mosquitto-server lässt sich nicht als HB Plugin installieren sondern ist als eigene Software zu installieren.


    Ist mit MQTT-Broker der mosquitto-server gemeint?


    Benötige ich dann für HomeBridge einen von den Plugins Homebridge MQTT-Thing oder homebridge-mqtt?

    Oder werden die Plugins benötigt damit HB in der MQTT Sprache mit dem mosquitto-server kommunizieren kann?


    Muss ich dann mosquitto auf der raspi mit dem selben homebridge user installieren oder spielt das keine Rolle?


    Da ich von mqtt2 gelesen habe, wäre es vorteilhaft wenn ich dann einen mqtt2 habe oder würde das jetzt mehr Hürden mit sich bringen?


    Vielleicht geht's mit einem Webhook-Plugin.

    Das wäre für mein Vorhaben am einfachsten wenn ich es hinbekomme ;)

    Habe folgende gefunden werde das mal testen.

    Programmable HTTP Switch

    homebridge-http-webhooks

    homebridge-http-switch-webhook


    Mit Node Red ginge es sicherlich. Node Red kann durch Homebridge-Fähigkeiten erweitert werden und dann kann man von dort aus Homebridge-Geräte steuern. Das geht auch MQTT-Broker.

    Heute habe ich von Node-Blue und HomeGear bei Patrik Mayer gelesen.

    Node-Blue soll mit mit c++ Runtime und and, or, ... Verknüpfungen arbeiten können.

    Hört sich für mich an, dass es universeller ist als RED.


    Dazu habe ich die gleichen Fragen wie bei mqtt.


    Node als eigene Instanz installieren oder gibt es da ein Plugin für HomeBridge?


    Zuletzt schreibst du, dass es auch mit MQTT-Broker geht.

    Also benötige ich nicht unbedingt Node-Red/Blue?


    Bananajoe86

    Soweit ich das verstanden habe sind die von sschuste erwähnten webhook Plugins genau das was ich benötige und die sind ja mit der Template API erstellt worden.

    Programmable HTTP Switch

    homebridge-http-webhooks

    homebridge-http-switch-webhook



    Wenn ich ein bisschen Programmieren könnte würde ich Tag und Nacht nur solche Plugins bauen aber

    leider habe ich mich seinerzeit für den falschen Beruf entschieden.

    Mehr als compiling und nachahmen mit Howtos ist bei mir nicht drin.


    Besten Dank an Euch und viele Grüße

    Hallo Zusammen,


    kann man auch den Node Version Manager benutzen?

    Ich habe gelesen, dass dadurch immer die zwei passende Paare node und npm aktuallisiert werden.


    About

    nvm is a version manager for node.js, designed to be installed per-user, and invoked per-shell. nvm works on any POSIX-compliant shell (sh, dash, ksh, zsh, bash), in particular on these platforms: unix, macOS, and windows WSL.


    Oder ist die Installation per-user nicht das richtige für die HomeBridge?

    Hallo Zusammen,


    ich bin ein Anfänger in Smarthome habe mit H**BS und meinen Shelly's + Lumary (Tuya) RGBWW LED Panels angefangen.


    Nun habe ich mich für Homebridge entschieden ;)


    Ich kann meine Rollläden, Lampen und Tuya LED's per HomeKit über Homebridge bedienen.

    Ich habe auch bereits die ID und Key's der Tuya Geräte ausgelesen.


    Meine Frage:

    gibt es ein Plugin für HB damit ich die Tuya LED's mit einem Shelly i3, i4 oder 1,... durch einen Taster an der Wand ein und ausschalten kann?


    Mein Gedanke:

    z.B. Shelly i4/i3 kann ja ein http-Befehl senden wenn der Taster an der Wand betätigt wird.

    Kann ich mit diesem http-Befehl in HomeBridge den Schalter für die Tuya LED umschalten?

    Es geht mir in erster Hinsicht nur um das ein und ausschalten der Tuya LED's .


    Oder benötige ich da mehr als nur ein Plugin in HomeBridge?


    Ich habe so viel gelesen das ich vor lauter Bäumen den Wald nicht mehr sehe.


    Von RedNode (um Verknüpfungen zu erstellen) und MQTT (Kommunikationsprotokoll?) spricht man viel.

    Benötigt man Grundsätzlich einen MQTT Broker=Server?

    Brauche ich für mein Vorhaben überhaupt sowas?


    Viele Grüße