Mini Howto für ha-bridge (Alexa FHEM)

Begonnen von Simon74, 12 Februar 2017, 01:24:44

Vorheriges Thema - Nächstes Thema

Simon74

#45
Ich würde zunächst mal manuell starten und testen ob es korrekt läuft, Stichwort java -version:
cd /opt/habridge
java -jar ha-bridge.jar


Wenn ja würde ich in etwa folgendes Startscript erstellen/versuchen (ungestet!)
nano /etc/init.d/habridge
#!/bin/sh
### BEGIN INIT INFO
# Provides:          habridge
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: habridge Daemon
# Description:       use correct java version !
### END INIT INFO

ROOT_DIR=/opt/habridge

DAEMON_USER=root
DAEMON_NAME=habridge

DAEMON=/usr/bin/java
DAEMON_ARGS="-jar -Dconfig.file=/etc/habridge/habridge.config /opt/habridge/ha-bridge.jar"
PIDFILE=/var/run/$DAEMON_NAME.pid

. /lib/lsb/init-functions

do_start() {
  log_daemon_msg "Starting $DAEMON_NAME daemon"
  start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --chdir $ROOT_DIR --exec $DAEMON -- $DAEMON_ARGS
  log_end_msg $?
}
do_stop() {
  log_daemon_msg "Stopping $DAEMON_NAME daemon"
  start-stop-daemon --stop --pidfile $PIDFILE --retry 10
  log_end_msg $?
}

case "$1" in

    start|stop)
        do_${1}
        ;;

    restart|reload|force-reload)
        do_stop
        do_start
        ;;

    status)
        status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?
        ;;
    *)
        echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}"
        exit 1
        ;;

esac
exit 0



Wenn das starten und stoppen damit funktioniert den Daemon aktivieren und rebooten um den Autostart zu testen..
update-rc.d habridge defaults
reboot





scottyfhem

Danke für die schnelle Antwort! Werde ich am Wochende ausprobieren und berichten.

hase6578

Zitat von: Simon74 am 09 März 2017, 11:26:47

Da du anscheinend den csrf Token verwendest -> hast du diesen per Attribut (attr myWEBinstanz csrfToken ..) in der Webinstanz auch gesetzt ?
Wenn nein ändert sich dieser bei jedem Neustart von FHEM.

Danke! Das wars und jetzt läufts... :)

Mickey Mouse

ich habe noch eine vielleicht saublöde Frage:

die allermeisten Leute werden ja die ha-bridge verwenden weil sie KEINE Philips HUE Bridge/Lampen haben (außer als Proxy, den Sinn habe ich aber noch nicht verstanden).
es wird ja wohl viele Leute geben die wie ich FS20/Homematic Dimmer im Einsatz haben.

nun ist es so, dass die FHEM API für FS20 Dimmer nur diskrete Stufen kennt:
dim06% dim12% dim18% dim25% dim31% dim37% dim43% dim50% dim56% dim62% dim68% dim75% dim81% dim87% dim93% dim100%

ich kann also sagen: "Alexa, dimme Wohnzimmerlicht auf 50%", aber 55% funktioniert nicht, 56% wieder...

FS20 kennt auch "dimup" und "dimdown", HUE eigentlich auch und jetzt kommt die eigentliche Frage:
wie bringe ich der ha-bridge diese dimup und dimdown Befehle bei?!?

es gibt ja nur einen "Dim Items" Eintrag. Natürlich kann ich da mehrere Befehle für verschiedene Geräte eintragen, aber ich habe noch nicht verstanden wie ich zwischen einem "absoluten" und einem "relativen" (up/down) Befehl unterscheiden kann?!?

z.Z. sieht das z.B. so aus:
http://192.168.0.153:8085/fhem?cmd.WZ_Front=set%20WZ_Front%20dim${intensity.percent}%25
damit kann ich diese Lampe auf einen spezifischen Wert dimmen (der aus der o.g. Liste stammen muss) aber wie kann ich jetzt heller/dunkler dimmen?
ja natürlich kann ich da auch:
http://192.168.0.153:8085/fhem?cmd.WZ_Front=set%20WZ_Front%20dimup
eintragen. Aber dann wird halt bei jeder Ansage mit "dim" die Lampe heller gestellt, ist ja auch nicht gerade das was man haben möchte.

ich gebe ehrlich zu, dass ich sogar zu blöde bin die "Namen" der Befehle zu finden! Auf englisch ist es einfach: dim & brighten aber was muss man da auf Deutsch sagen? Ich finde keine Liste!!!

aber selbst wenn ich die Befehle kennen würde, wie stelle ich in der ha-bridge die Befehle für dimup, dimdown und dim<absolut%> ein, wenn es dafür nur "1 Feld gibt"?

Simon74

Ich habe keine FS20 Devices, nur Homematic Dimmer die jeden Prozentwert unterstützen, kann zu FS20 nichts hilfreiches beitragen.
Zur eigentlichen Frage, eine Idee ?
Eine Idee wäre im habridge Dim-Items eine FHEM-Sub(myUtils) aufzurufen und die Angaben(Prozenz,Device) auszuwerten und in brauchbare FS20-Dimwerte umzurechnen.
---
Ich selbst habe heller/dunkler bis dato noch gar nie versucht, aus Neugierde aber soeben getestet.
Dazu ein Test-Device in habridge erzeugt mit Name: Vitrine
Die Commands sollen nur einen FHEM Logeintrag erzeugen (Log 1, "habridge: Dim XX"), um zu erfahren was ausgelöst bzw. von Alexa verstanden wird.

habridge-Items: On, Dim, Off:
http://fhem.domain.net:8088/fhem?cmd=%7BLog+1%2C+%22habridge%3A+On%22%7D
http://fhem.domain.net:8088/fhem?cmd=%7BLog+1%2C+%22habridge%3A+Dim+${intensity.percent}%22%7D
http://fhem.domain.net:8088/fhem?cmd=%7BLog+1%2C+%22habridge%3A+Off%22%7D


Sprachtest und Ergebniss:

Alexa, schalte Vitrine ein
habridge: On

Alexa, schalte Vitrine aus
habridge: Off

Alexa, schalte Vitrine auf 20 Prozent
habridge: Dim 20

Alexa, schalte Vitrine heller
habridge: Dim 45

Alexa, schalte Vitrine heller
habridge: Dim 69

Alexa, schalte Vitrine dunkler
habridge: Dim 44

Alexa, stelle Vitrine heller
habridge: Dim 69

Alexa, schalte Vitrine aus
habridge: Off

Alexa, stelle Vitrine heller
habridge: Dim 25

Alexa, stelle Vitrine auf 30 Prozent
habridge: Dim 30

Erkenntnis:
Alexa scheint sich die Werte zu merken, und um die 25-30% zu vergrössern/verkleinern
Sobald das Wort "stelle, dunkler, heller, Prozent" vorkommt wird immer "Dim-Items" seitens habridge ausgelöst.
Ich dachte bis jetzt das das Wort "schalte" eindeutig ist (Ein,Aus). Diesem Test zufolge jedoch nicht, wenn auch das Wort "Prozent" vorkommt.

Mickey Mouse

Zitat von: Simon74 am 11 März 2017, 11:25:23Eine Idee wäre im habridge Dim-Items eine FHEM-Sub(myUtils) aufzurufen und die Angaben(Prozenz,Device) auszuwerten und in brauchbare FS20-Dimwerte umzurechnen.
ich hatte ja gehofft direkt von der ha-bridge FS20 dimup/down Befehle absetzen zu können aber das scheint ja nicht zu klappen.
daher habe ich mir jetzt tatsächlich schnell ein quick'n dirty Script geschrieben das die Dim-Befehle der ha-bridge "in das Raster einsortiert", das funktioniert einwandfrei!

ZitatErkenntnis:
Alexa scheint sich die Werte zu merken, und um die 25-30% zu vergrössern/verkleinern
nee, zum Glück nicht, das wäre ja fatal!

für mich sieht es so aus: Alexa kommuniziert mit der ha-bridge und fragt vor der Änderung den aktuellen Wert ab.

Beispiel:
ich Dimmer per Echo auf z.B. 50%. Dann nehme ich ich meine Harmony und dimme auf 81%. Anschließend sage ich: "Alexa, schalte Lampe heller".
würde sich Alexa den Wert merken, dann würde die Lampe jetzt ja nicht heller sondern dunkler werden, weil Alexa noch von 50% statt der 81% ausgeht.
hier sieht es aber tatsächlich so aus, dass Alexa nicht auf "ihren" letzten 50% aufsetzt sondern den tatsächlichen 81% und die Lampe wird tatsächlich auf 100% gedimmt, genauso wie es sein sollte!

btw.: ich habe mal "aus Spaß" die ha-bridge auch noch als HUEBridge Device in FHEM angelegt (auf die Idee war ich noch gar nicht gekommen), dann kann man sich auch den tatsächlichen Status der "HUE-Geräte" ansehen.


rr725

ohne mir jetzt alles hier durchgelesen zu haben....natürlich funktioniert fs20 dimmen in ha bridge...

[{"item":"http://user:kennwort@xxx.xxx.xxx.xxx8083/fhem?cmd.Fernseh=set%20Haengelampe%20dim%20${intensity.percent}"}]


Alexa, Hängelampe auf 80 %

?! Was will man mehr......

Mickey Mouse

#52
sicher? Das hat bei mir nicht funktioniert!
jedenfalls NICHT 80%, 81% oder 87% funktioniert!

aus der FS20 Commandref: Set
set <name> <value> [<time>]

where value is one of:
dim06% dim12% dim18% dim25% dim31% dim37% dim43% dim50%
dim56% dim62% dim68% dim75% dim81% dim87% dim93% dim100%
dimdown
dimup
dimupdown
...


dimup/dimdown kann man nicht vernünftig von der ha-bridge senden. Da hatte ich mir zusätzliche Geräte angelegt, also z.B. "Lampe" für an/aus und dann noch "Lampe Helligkeit" und da bei "ein" ein dimup und "aus" ein dimdown als Befehle eingetragen.
auch wenn ich von der Harmony Elite aus mit der Wippe dimmen wollte, wurde immer nur ca. jeder 10. Tastendruck akzeptiert, wenn der zufällig auf einem gültigen Wert gelandet ist.

wie gesagt, ich habe jetzt ein ganz einfaches Script dazwischen geschaltet, das den nächsten gültigen Wert aus der o.g. Tabelle wählt und dann diesen dimXY% Befehl absetzt. Seitdem kann ich "irgendeine Zahl" zwischen 0 und 100 sagen und es wird immer gedimmt, die Wippe auf der Elite funktioniert und heller/dimmen per Alexa (ohne Prozent) ebenfalls.

Edit: um das besser verstehen zu können, warum andere Leute ihre FS20 mit einem absoluten Wert von 80% steuern können, während bei mir ohne Script nur 75 oder 81 aber nicht 80% funktioniert, würde mich mal interessieren was mit:
"cmd.Fernseh=set%20Haengelampe"
angesteuert wird?
ich kenne eigentlich nur solche http Kommandos bei denen der Teil "nach dem Punkt hinter cmd" mit dem nach dem Space nach set übereinstimmt.
wie ist das FS20 Device denn spezifiziert, das mit cmd.Fernseh=set Haengelampe angesteuert wird?

beim mir war das halt vor dem Script immer:
cmd.Lampe= set Lampe dimXY% (der Einfachheit ohne URL Encoding)
wobei dann XY eben nur die o.g. Werte einnehmen darf?!?

um noch etwas mehr Licht in das Dunkel zu bringen:
laut Aussage von rr725 kann wohl der FS20 Dimmer DI22-4 auch die "Zwischenstufen" einstellen und angeblich sendet FHEM diese Befehle, auch wenn es nicht dokumentiert ist.
ich kann das nicht verifizieren, die FS20 Installation ist schon etwas älter und es sind viele DU-1/2 (UP Einbau), HLD (12V Halogen) und DI-3 (Zwischenstecker) Dimmer verbaut. Von denen reagiert KEINER auf die dimXY% Befehle wenn XY nicht aus dem gültigen Werte-Pool stammt.

und noch ein Nachtrag:
ich habe gerade mal direkt von FHEM mal ein "set BAD_Licht dim80%" abgesetzt und die Antwort ist:
"Unknown argument dim51%, choose one of dim06% dim100% dim12% dim18% dim25% dim31% dim37% dim43% dim50% dim56% dim62% dim68% dim75% dim81% dim87% dim93% dimdown dimup dimupdown off off-for-timer on on-100-for-timer-prev on-for-timer on-old-for-timer on-old-for-timer-prev ramp-off-time ramp-on-time reset sendstate timer toggle dim off-till blink on-till on-till-overnight off-till-overnight intervals"
der Dimmer ist als DI konfiguriert, DI22 gibt es in meiner Liste gar nicht.
ein "dim81%" funktioniert dagegen ohne Probleme (ist ja auch aus der Liste). Ich muss die Aussagen hier anzweifeln...

Wassermann52

Guten Abend,

vielen Dank für die Infos hier, aber irgendwie bin ich an der gleichen Stelle wie hase6578

Ich habe die HA-BRIDGE auf einem zweiten PI (192.168.178.137) am laufen, Version 4.3.1 nachdem 4.3.0 erst mal gar nicht lief.
Schalten will ich eine einfache Lampe.

Wenn ich auf dem PI, bei dem die Bridge läuft, im Browser die URL
http://192.168.178.4:8083/fhem?cmd=set%20BUERO_LICHT%20off
Aufrufe, passiert nix. Soll auch so sein, das ist der default Port für FHEM.
Wenn ich die dedizierte FHEMWEB instanz auf port 8088 mit attribut csrfToken = none aufrufe, URL lautet dann
http://192.168.178.4:8083/fhem?cmd=set%20BUERO_LICHT%20on
geht die gewünschte Lampe aus.
Damit denke ich mal das
a) die Verbindung zwischen den beiden Systemen klappt und
b) mein FHEM soweit richtig konfiguriert ist.

Wenn ich aber jetzt in der HA-BRIDGE genau dieses Kommando in die Zelle TARGET ITEM eintrage,
http://192.168.178.4:8088/fhem?cmd=set%20BUERO_LICHT%20off
und als VERB GET auswähle, und CONTENT/TYP auf html/text setze, bekomme ich beim TEST OFF die Fehlermeldung
"Request Error, Pleae look in your habridge log: error {"type":6,"address":"/lights/4","description":"Error on calling out to device","parameter":"/lights/4state"}"
und im log steht dann
"WARN   Could not execute request: http://192.168.178.4:8088/fhem?cmd=set%20BUERO_LICHT%20off   com.bwssystems.HABridge.plugins.exec.CommandHome"

Es sieht für mich so aus als ob die HA-BRIDGE kein Zugriffsrecht hat, der auf dem selben PI laufende Browser aber schon.
Woran kann das denn liegen, hat da jemand einen Tip ?

Vielen Dank schon mal vorab.



Mickey Mouse

ich würde das erstmal auf Tip-Fehler überprüfen!
in deinem Beitrag gehen on/off und 8083/8088 wild durcheinander...

Wassermann52

Nun, ich habe jetzt in dem Text wirklich ein mal ON statt OFF geschrieben, aber ... glaub mir, ich habe jeden Befehl immer 2x, mit ON und OFF getestet.
Da ist mir wohl auch der cut&paste Fehler unterlaufen.

Und wenn dich jetzt die Ports verwirrt haben:
auf dem FHEM-Server läuft das normal Webfrontend auf dem Default Port 8083, auf Port 8084 und 8085 Instanzen für Tablett und Smartphone Displays und auf 8088 hab ich jetzt mal die Instanz für die HTTP Kommunikation mit dem zweiten PI gelegt, auf dem HA-Bridge läuft. Dich mag das jetzt verwirren, aber für mich ist das viel eingängiger als alles auf einem Rechner zu fahren. Später soll das mal ein Docker Container übernehmen, aber immer ein Schritt nach dem anderen. Den Port 8083 hab ich testeshalber parallel mal auch auf gemacht gehabt, damit hat sich dann das Licht sowohl via Port 8083 als auch via Port 8088 schalten lassen. Danach hab ich den Port auf 8083 wieder auf den ursprünglichen Zustand gesetzt, sprich jetzt gerade funktionieren die Browser URL's nur über Port 8088.

Deshalb, wegen ein Schritt nach dem anderen,  hab ich ja auch erst mal getestet ob ich von dem PI auf dem HA-Bridge laufen soll überhaupt manuell auf die Instanz auf dem FHEM Server zugreifen kann, und das klappt ja auch per Browser. Damit kann ich zumindest mal ausschließen das auf der Seite der FHEM Installation etwas fehlt oder irgend welches Zugriffsberechtigungen nicht passen.

Fakt ist das ich von Rechner A (PI für HA Bridge) auf Rechner B (FHEM Server) zugreifen kann, via Browser URL auf Port 8088 auch Licht ein und aus schalten kann, die selben Kommandos von HA-Bridge aus abgesetzt (siehe die Kopierte Zeile aus dem Logfile von HA-Server) zu einer Fehlermeldung und eben dem "Nicht Schalten" auf der FHEM Seite führen. Jetzt hoffe ich halt das jemand sagt "Das hatte ich auch, und ich habe xxxx gemacht und das hat geholfen".



PS.: Bis Samstag Abend hab ich mit einer HA-Bridge 4.3.0 rum gekämpft die auf dem PI auch regelmäßig abgestürzt ist, die Version 4.2.0 aber problemlos lief. Seit ich jetzt die 4.3.1 habe läuft HA-Bridge anscheinend wieder auf dem PI, aber eventuell ist ja noch irgend etwas verbogen, aber das glaub ich eigentlich nicht so recht.

PSS.: Um der Frage vorzubeugen: "Ja, ich habe auch bei beiden System schon Kaltstarts gemacht, aber ohne Erfolg."


Mickey Mouse

sorry, aber mir ist das zu blöd...

du schreibst ganz klar:
ZitatWenn ich die dedizierte FHEMWEB instanz auf port 8088 mit attribut csrfToken = none aufrufe, URL lautet dann
http://192.168.178.4:8083/fhem?cmd=set%20BUERO_LICHT%20on
geht die gewünschte Lampe aus.
Zitathttp://192.168.178.4:8088/fhem?cmd=set%20BUERO_LICHT%20off
und als VERB GET auswähle, und CONTENT/TYP auf html/text setze, bekomme ich beim TEST OFF die Fehlermeldung

also 192.168.178.4:8083 funktioniert per Web und 192.168.178.4:8088 per ha-bridge nicht!
was hat das eine mit dem anderen zu tun?!? Warum testest du denn per Web Interface einen Port den du mit der ha-bridge nicht nutzt?!?
warum soll denn ausgerechnet der "Default Port" nicht funktionieren?

und für welches Interface hast du denn csrfToken per Attribut abgeschaltet 8083 oder 8088?!?
wenn es stimmt, dass du das für 8088 gemacht hast, dann dürfte nach einem Neustart doch auch das Webinterface auf 8083 nicht mehr gehen?

bei mir hat übrigens auch 4.3.0 funktioniert, da die aber schon nach einem oder zwei Tagen durch 4.3.1 ersetzt wurde, gab es da wohl echte Probleme.

wenn du Hilfe erwartest, dann solltest du auch ein ganz kleines bisschen vernünftige Vorarbeit leisten.

Wassermann52

Ich glaube du willst mich nicht verstehen:

ich schrieb das ich zuerst beide Ports getestet habe, per browser, um sicher zu gehen das ich keinen Fehler gemacht habe.
Es geht nur um den Port 8088, soweit ist klar, und ich weiß jetzt das ich dich durch meinen C&C Fehler völlig verwirrt habe, was mir auch leid tut.
Das du dich davon jetzt leider anscheinen nicht befreien kannst konnte ich ja vorher nicht ahnen.

attrib csrfToken none   
ist jetzt nur noch für den Port 8088 gesetzt (war aber vorher testeshalber auch für 8083 gesetzt)

Und deine Annahme das jetzt per Browser der Zugriff via Port 8083 jetzt nicht mehr geht ist korrekt: die URL
http://192.168.178.4:8083/fhem?cmd=set%20BUERO_LICHT%20off
für zu keinem Ergebnis, während die URL
http://192.168.178.4:8088/fhem?cmd=set%20BUERO_LICHT%20off
sehr wohl die Lampe ausschaltet.

Laß doch einfach mal den Port 8083 weg, denk einfach nicht drüber nach.
Gibt es irgend einen Grund, weshalb eine Browser URL funktioniert, HA-Bridge aber das Kommando mit einer Fehlermeldung quittiert ?

bye


Wassermann52

So, kleiner Update:

Nachdem ich gestern noch versucht haben auf dem Netzwerklayer dem Probem auf die Spur zu kommen, wurde es irgendwann zu spät.

Heute früh habe ich dann erst einmal in den Kommentaren zu HA-Bridge auf GitHub ein bischen herum gelesen und gesehen das es immer wieder mal Probleme mit dem Eingabestring gab, genauso wie bei mir. Ein paar mal hat dann die manuelle Neueingabe des http Kommandos, also kein C&P, geholfen. Obwohl der String absolut identisch war.

Ich habe daher jetzt mal ein zweites Device angelegt, und alle Werte noch mal brav per hand eingetippt und siehe da, mit dem neu angelegten Device kann ich jetzt die Lampe wie gewünscht schalten.  Das Problem scheint also irgendwo beim Parser von HA-Bridge zu liegen und nicht bei FHEM oder der Konfiguration.
Was genau das Problem ist hab ich noch nicht reproduzieren können, aber falls ich etwas finde geb ich Euch hier Bescheid.


Krossi

Habe da mal eine Frage , kann ich die Ha-bridge auch Installieren , wenn ich bereits eine Richtige Hue-Bridge V2 in Fhem eingebunden habe?