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

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

Vorheriges Thema - Nächstes Thema

heikoh81

#255
Hallo zusammen,

zu den Posts bzgl. Discover-Problemen:
Auch ich habe regelmäßig mit den Discover-Problemen gekämpft.

Die Lösung war bei mir, unter Bridge Control
Button Press/Call Item Loop Sleep Interval (ms) = 650
sowie
UPNP Send Delay = 650
zu setzen.

Seither läuft die Erkennung sehr zuverlässig.
Gefunden habe ich das in dem Github Issue zur Release Candidate-Entwicklung von 5.2.0, ich finde das issue aber jetzt nicht mehr...

Zu den Posts bzgl. Standalone-Spracherkennung:
Ich denke mal, das wird momentan nicht gehen. Das ist ja sicherlich das Geheimnis von Amazon und die Technik wollen sie erstmal nur auf ihren Servern behalten :-)
Das Problem ist auch vielmehr die Hue-Emulation von HABridge. Ich gehe davon aus, dass Philips & Amazon eng zusammenarbeiten. Wenn die was am Hue-UPNP-Protokoll ändern, ist das mit Amazon abgestimmt, d.h. original Hue-Bridges funktionieren weiterhin.
HABridge muss dann halt immer hinterher programmieren.

Ein ähnliches Problem habe ich jetzt, weil Echo seit neuestem bei "Stelle auf 50%" zunächst noch einen on-Befehl sendet.
Das ist natürlich gar nicht gut für meine Homematic-Aktoren. Darf ich jetzt wieder mit DOIF hinterherprogrammieren mit wait-Timern, die erstmal warten, ob noch ein %-Wert kommt...

Zu den Posts bzgl. FHEM-Integration in HABridge:
Dazu kann ich leider nichts sagen, ich verwende HABridge lediglich zum Aufrufen von FHEM-URLs.
Ich habe alle Devices manuell in HABridge angelegt.

Viele Grüße,
Heiko

Allodo

Ich habe heute habridge 5.2.1 installiert und habe so meine Probleme mit den "FHEM DEVICE".

Unter Bridge Devices habe ich unter FHEM Names and IP Addresses folgendes eingegeben und gesichert.
Name: Fhem (Der Name sollte doch eigentlich egal sein, oder?)
IP: IP-Adresse von fhem
Port: Port von fhem (8083)
Username: Username von FHEM
Password: Passwort von FHEM WebUI
Room: habridge (dorthin habe ich alle meine HM-Geräte hinzugefügt)

Wenn ich jetzt den Reiter FHEM-Devices öffne sehe ich aber keine Devices.

Es kommt nur der Fehler:
Get FHEM Devices Error: undefined with status: Server Error - 500

Der Nutzername und Passwort stimmen jedoch. Woran kann das liegen?

Ich hatte vorher einen csrfToken angelegt. Kann es damit zusammenhängen?

sash.sc

Schalte den mal zum testen aus.

Gruß Sascha

Gesendet von meinem E6653 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Allodo

@sash.sc
Danke!!!

Es lag am csrfToken ;)

Kaum ist dieser abgeschaltet, waren die Items sofort da :)

a.w.muc

Zitat von: Simon74 am 12 Februar 2017, 01:24:44
Ich habe mich heute mit der habridge beschäftigt, da mir persönlich die Amazon Developer Geschichte zu aufwendig ist (obwohl ich Sie fertig installiert und kurz im Einsatz hatte).
Die ha-bridge simuliert Alexa einen HUE-Adapter vor, der automatisch (ohne zusätzlichen Skill) gefunden wird.

Vorteile:

  • Kein Amazon Developer Account notwendig, einfachere (lokale) Einrichtung
  • Kein (external->internal) Portforwarding von Amazon zu FHEM notwendig
  • Keine Skills in der Alexa App notwendig
  • Amazon Echo/Dot findet die virtuelle HUE-Bridge im lokalen Netzwerk automatisch (Spracheingabe: "Alexa, Geräte suchen")
Nachteile:
  • Keine erweiterten Aktionen/Nachfragen (Interaktionen) möglich

Unterstützte Alexa Smarthome Sprachbefehle (Onlinehilfe): https://alexa.amazon.de/spa/index.html?#help/node/201749260

Vorraussetzungen:

Ich habe bei mir die ha-bridge Installation aus sicherheitsgründen auf separater VM (schlankes "Blank" Debian Jessie) virtualisiert.
Die Anleitung kann nicht 1 zu 1 bei anderen Vorraussetzungen gelten !
NEWS: Ab Version 4.5 lässt sich das Webinterface mit Benutzername und Kennwort absichern ! Mehr dazu hier: https://github.com/bwssytems/ha-bridge/wiki/Security-Configuration
Zusätzlich wurde meine ha-bridge mit iptables abgesichert. Mehr dazu auf Seite3: https://forum.fhem.de/index.php?topic=66920.msg598432#msg598432

Ich selbst lasse die ha-bridge auf dem Standard Port (80) laufen, ändern kann man dies nach erstem Start/Stop des Services in der Datei "habridge.config" Datei, oder einfach im Webinterface Reiter "Bridge-Control" unter "Web Server Port". Die Portänderung des Webinterfaces (falls notwendig), sollte vor dem anlegen der Devices erfolgen, auch die Anpassung des "Device DB Path and File" nach "/etc/habridge/data" erachte ich als sinnvoll.

FHEM-Server: Eigene FHEMWEB Instanz für die habridge
Aufgrund des csrfToken und eventuell aktiviertem HTTPS von FHEM WEB muss für die habridge eine eigene WEBhabridge Instanz erstellt werden.
In diesem Beispiel auf Port 8088, Zugriff erlaubt nur für localhost und der ha-bridge selbst (IP: 192.168.1.10).
define WEBhabridge FHEMWEB 8088 global
attr WEBhabridge csrfToken none
attr WEBhabridge allowfrom 127.0.0.1|192.168.1.10


Voraussetzung: Installation von java8-jdk:
Wer die habridge auf breits bestehendem System installiert, hat java meist schon installiert, prüfen mit:
(Ausgabe von meinem Debian Stretch Host:)
java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)


Variante-1: Aus dem Debian Repository (Open jdk):
apt-get install openjdk-8-jdk-headless --no-install-recommends

Variante-2: (Oracle jdk)
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java8-installer
apt-get install oracle-java8-set-default


ha-bridge: Installation der ha-bridge (Kurzform):
Zuerst sehen wir nach der aktuellen Versionsnummer, diese finden wir auf dieser Seite: https://github.com/bwssytems/ha-bridge/releases
Dann müssen wir die x.x im nachfolgenden wget Code mit der aktuellen Release Nummer ersetzen.
mkdir -p /opt/habridge /etc/habridge /etc/habridge/data
wget https://github.com/bwssytems/ha-bridge/releases/download/v4.x.x/ha-bridge-4.x.x.jar -O /opt/habridge/ha-bridge.jar

Für ein Update der ha-bridge Version einfach die wget-Zeile (mit URL der neuen Version) nochmals ausführen, zuvor jedoch mit [service habridge stop] den Daemon beenden.

ha-bridge: Daemon einrichten (systemd):
nano /etc/systemd/system/habridge.service
Inhalt:
[Unit]
Description=HA Bridge
Wants=network.target
After=network.target

[Service]
Type=simple

ExecStart=/usr/bin/java -jar -Dconfig.file=/etc/habridge/habridge.config /opt/habridge/ha-bridge.jar

[Install]
WantedBy=multi-user.target


Daemon starten, Autostart konfigurieren:
systemctl daemon-reload
systemctl start habridge.service
systemctl enable habridge.service


Nach dem erfolgreichen starten kann man mit dem anlegen der Devices/Geräte per Webinterface beginnen,
klicke dazu auf den Button Add/Edit Siehe angehängtes Bild !

Info: Egal welches Devices angelegt wird, geschaltet wird immer per "HTTP URL Command" Aufruf.
In der ha-bridge Konfiguration kann eine URL für On, Dimmmen und Off angegeben werden.
Beispiel, ein Homematic Dimmer:
Ein: (Alexa, schalte Wohnzimmer Licht ein)
http://fhem.domain.net:8088/fhem?cmd=set%20wz.lampe_Sw%20on
Dimmen: (Alexa, stelle Wohnzimmer Licht auf 30 Prozent)
http://fhem.domain.net:8088/fhem?cmd=set%20wz.lampe_Sw%20pct%20${intensity.percent}
Aus: (Alexa, schalte Wohnzimmer Licht aus)
http://fhem.domain.net:8088/fhem?cmd=set%20wz.lampe_Sw%20off

Was muss bei Add/Edit eingetragen werden ? Siehe angehängtes Bild !
Ich schreibe hier nur die Felder die ich ausgefüllt habe, mit dem Beispiel von Wohnzimmer Dimmer von oben:
Name: Wohnzimmer Licht (mit diesem Namen findet Alexa das Device )
Map Type: HTTP Device
On Items:
Type: HTTP Device
Target Item: Hier wird die "Command HTTP URL" (Befehl) für den FHEM Server eingetragen !


Das wars eigentlich auch schon :-)

Tips und Stolperfallen:

  • Nach anlegen der Devices auf "http://alexa.amazon.de" unter Smarthome auf Geräte suchen klicken, oder einfach per Spracheingabe mit "Alexa, Geräte suchen"
  • Command URLs am besten vorab manuell per Browser testen
  • Devices können mit Edit/Copy auch unter neuem Namen gespeichert werden, so ist man erheblich schneller und muss nicht bei jedem neuen Decives alles neu eintragen
  • Harmony-Hub, IP kann im Reiter Bridge-Control eingetragen werden. Ich musste die habridge danach neustarten, erst danach waren die "Harmony Activities" und "Harmony Devices" im WebGui gefüllt
  • Geräte die in der ha-bridge gelöscht werden, werden NICHT in der Alexa App gelöscht, Sie müssen Online (http://alexa.amazon.de >: unter Smarthome) gelöscht werden ("Alle verwerfen").

Logitech Harmony Hub
Der Harmony Hub kann auch direkt ohne FHEM geschaltet werden.
Variante1 per habridge -> FHEM -> HarmonyHub
Also zB. für Aktion Fernsehen: "Alexa, schalte Fernseher ein" und "Alexa, schalte Fernseher aus"
On Items
Type: HTTP Device
http://fhem.domain.net:8088/fhem?cmd=set%20hub.wz%20activity%20Fernsehen

Off Items
Type: HTTP Device
http://fhem.domain.net:8088/fhem?cmd=set%20hub.wz%20activity%20PowerOff


Variante2 direkt per habridge -> HarmonyHub
In diesem Beispiel heisst mein eingetragener Hub unter Bridge-Devices "hub.wz", Meine Activity ist Fernsehen (ID: 10292300)
Am einfachsten im Reiter "Harmony Activities" auf "Build Item" klicken, so wird das Device schon angelegt, es muss nur noch der gewünschte Name vergeben werden
On Items
Type: Harmony Activity
Target Item: {"name":"10292300","hub":"hub.wz"}

Off Items
Type: Harmony Activity
Target Item: {"name":"-1","hub":"hub.wz"}



Aufruf einer SUB/Funktion in 99_myUtils
Das Stichwort lautet hier URL Encoder !
Das funktioniert nicht:
http://fhem.domain.net:8088/fhem?cmd={AlleLichterAus}

Das funktioniert:
http://fhem.domain.net:8088/fhem?cmd=%7BAlleLichterAus%7D

Backup der ha-bridge Konfiguration:
In der WebGUI können ganz einfach per Klick auf  "Bridge Device DB Backup" und Klick auf "Backup Device DB" Backupdateien erstellt werden.
Diese werden standardmässig im Pfad /data gespeichert.
Dieser Pfad kann jedoch im Reiter "Bridge-Control" unter "Device DB Path and File" angepasst werden (Aktuelle Konfiguration: device.db, Backups: device.db-%TIMESTAMP%).
(In meinem Fall ist das dort wo Linux Konfigurationen auch hingehören: "/etc/habridge/data")

Gerdi68

Zitat von: Allodo am 05 Juni 2018, 19:15:13
Ich habe heute habridge 5.2.1 installiert und habe so meine Probleme mit den "FHEM DEVICE".

Unter Bridge Devices habe ich unter FHEM Names and IP Addresses folgendes eingegeben und gesichert.
Name: Fhem (Der Name sollte doch eigentlich egal sein, oder?)
IP: IP-Adresse von fhem
Port: Port von fhem (8083)
Username: Username von FHEM
Password: Passwort von FHEM WebUI
Room: habridge (dorthin habe ich alle meine HM-Geräte hinzugefügt)

Wenn ich jetzt den Reiter FHEM-Devices öffne sehe ich aber keine Devices.

Es kommt nur der Fehler:
Get FHEM Devices Error: undefined with status: Server Error - 500

Der Nutzername und Passwort stimmen jedoch. Woran kann das liegen?

Ich hatte vorher einen csrfToken angelegt. Kann es damit zusammenhängen?

Hallo,

ich habe die gleiche Fehlermeldung.
Die Einstellungen sind ähnlich. Andere IP, Keine Benutzernamen und kein Kennwert. Diese sind nicht eingerichtet.

Einen Token hatte und habe ich nicht aktiviert.

Anders als in weiteren Beiträgen hier beschrieben werden auch keine Geräte gefunden.
Ein Manuell angelegtes Gerät in der Brigde mit Type FHEM Device erzeugt beim Schalten auch nur eine Fehlermeldung.

Gibt es da irgendwo eine Dokumentation?
Oder hat jemand eine Idee wo ich den Fehler suchen soll?


Vielen Dank

hsepm

Hallo Gerdi68,

das klingt wirklich komisch.

HTTP-Fehler 500 Internal server error kann alles mögliche sein.

Ich würde an deiner Stelle mal im Browser mit den Entwicklertools nach mehr Info suchen und die dann posten. In Chrome F12 und dann auf den Reiter Network.

Möglicherweise kannst du auch mit verbose=5 in der FHEMWeb Instance für port 8083 sehen, was eigentlich bei FHEM ankommt.

Gruß,
Holger

Gerdi68

Hallo,

und vielen Dank das du dich der Sache angenommen hast  :)

Ich wollte es gestern Abend schon schreiben, das es jetzt geht.
Jedoch kenne ich die Lösung nicht so genau?!

Ggf. kann es die Umstellung auf Port 80 gewesen sein.
Habe vieles probiert und dann ging es auf einmal ;)

Es kann auch das explizite ausschalten des Tokens gewesen sein.
Der mag wohl standardmäßig aktiviert sein???
Auch wenn sich mir der Sinn nicht ergründet.

Simon74

Zitat von: heikoh81 am 31 März 2018, 21:04:03
Ein ähnliches Problem habe ich jetzt, weil Echo seit neuestem bei "Stelle auf 50%" zunächst noch einen on-Befehl sendet.
Das ist natürlich gar nicht gut für meine Homematic-Aktoren. Darf ich jetzt wieder mit DOIF hinterherprogrammieren mit wait-Timern, die erstmal warten, ob noch ein %-Wert kommt...

Scheint ein Problem neuerer Versionen zu sein, habe vor paar Tagen auch von 4.5.6 auf neue Version 5.2.1 aktualisiert und dieses unschöne Verhalten soeben auch festgestellt.
Retour auf Version ha bridge 4.5.6, und das dimmen Problem (zuerst "on", dann "pct") ist wieder weg.

Amok

Nabend,

habe kürzlich eine Mail erhalten, was Alexa neues kann ... und bin dabei hier hängen geblieben:

Zitat,,Alexa, stell das Licht auf Warmweiß."
Zusätzlich zu der Ein-/Aus- und Dimmfunktion kann Alexa auch die Lichtfarbe Ihrer intelligenten Lampen der Marken Philips, LIFX und TP-Link steuern.

Da Frag ich mich natürlich ob mit "...der Marken Philips..." auch die HUE-Bridge gemeint ist und ob das dann mit der ha-bridge auch klappen könnte.

Hat das schon mal jemand probiert? Oder gar laufen? Ich probier mir hier gerade schon nen Wolf alleine beim Versuch eine Farbänderung über die Test-Buttons in der ha-bridge an fhem zu übermitteln ...

Kann mir da wer auf die Sprünge helfen?

Danke & Gruß

chris1284

#265
Ein kleiner Tip, evtl auch für den ersten Beitrag, docker nutzen. Die Installation ist um einiges einfacher und Fehler unanfälliger
meine Installation:
user für ha bridge anlegen
adduser habridge --no-create-home --shell /bin/false
uid und gid auslesen
id habridge
Ordner für habridge anlegen und entsprechend berechtigen.
Das image ziehen und starten (hier die ausgelesene UID und GID eures erstellten Users ersetzen
docker run -d \
  --name=habridge \
  --net=host \
  --restart=always \
  -v /pool0/habridgeserver:/config \
  -e PGID="1008" \
  -e PUID="1005" \
  -p 80:8080 \
  -p 50000:50000 \
  linuxserver/habridge

mit portainer hat man auch ein recht schönes Webfrontend zur Containerverwaltung (natürlich auch als docker Container)

Mickey Mouse

Zitat von: chris1284 am 09 September 2018, 17:24:56Ein kleiner Tip, evtl auch für den ersten Beitrag, docker nutzen. Die Installation ist um einiges einfacher und Fehler unanfälliger
ist dem wirklich so?
die Installation von HA-Bridge ist doch nun wirklich ziemlich idiotensicher und die Probleme die i.d.R. auftreten werden durch Virtualisierung, Sandboxing, was auch immer doch nur noch größer.
ich hatte z.B. massive Probleme mit der HA-Bridge weil mein managed Switch bei Broadcast Filtering standardmäßig nicht auf allen VLAN "gesnooft" hat. In der nächsten Version der Firmware wurde das behoben.
Wenn sich also irgendwas an der Netzwerkanbindung solch eines Containers ändert, dann fliegt einem das alles um die Ohren.

Einfacher? Warum? Weniger anfällig gegen Fehler? Eher das Gegenteil...

Ich weiß, ich bin da ein Dinosaurier. Meinen ersten Unix Rechner habe ich 1986 zusammen gebastelt (Z8000 Coherent System) und der darauf folgende 80386SX hat kein DOS sondern SCO Unix bekommen. Damals hat man sich über solche "Multitasking Systeme" gefreut.
Ich will den Sinn von Virtualisierung und Instanzierung nicht schmälern aber man muss ja auch immer den Sinn, Vor- und Nachteile im Auge behalten.

mit systemd kann ich auf einem "monolitischen" System doch viel besser das Start und Stop Verhalten kontrollieren und muss mich nicht noch um Container Management kümmern.

chris1284

#267
ja, gut, sein managed Netzwerk sollte man im Griff haben bevor man etwas darin macht, egal ob virtuell oder nicht (oder am besten gleich unmanaged bleiben ). Wenn du sowas als Risikoquelle angibst argumentiere ich mal auch so abstrakt und führe SD-Karten, Netzwerkkabel, Disrtros und Hardware als Fehlerquelle mit auf... haben auch nichts mit Virtualisierung zu tun. Da kann dich aber docker / alle anderen OS nicht vor schützen. Dein Problem war ja offenbar auch nicht der Virtualisierung geschuldet da du keine Nutzt. So what?
Die Steps zum Erfolg sind aber weniger/einfacher, es ist einfach zu migrieren, einfacher zu backupen und recovern und wenn man was verbockt ist maximal der Container im argen und nicht das Hostsystem.
Kopien für Testumgebungen usw lass ich mal außen vor. Der Container anfälliger, ehr nicht. So wie er bereit gestellt wird läuft er zu 100%. Verfrickelst du nichts im Container, hältst dich an die Dokus, bastelst nicht selber (außer man weiß was man tut) läuft der auch.

Diese Grundsatzdiskusion gehört hier auch nicht hin sonder lediglich Lösungen für Ha-bridge auf möglichst simple Weise

Toto1973

Ich habe meine Ha Bridge auch auf die neue Version 5.2.1 aktualisiert. Die Bridge läuft bei mir Fehlerfrei. Allerdings kann ich nun keine neuen Devices mehr anlegen, da zwar das Device angelegt wird, aber das Device keinen Daten enthält. Also alles, was ich im Device einstelle, ist dann in nicht mehr vorhanden. Woran kann denn das liegen?
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

m0urs

Ich habe meine beiden Echo Dots (zusammen mit anderen IoT-Geräten) in ein eigenes WLAN gepackt (hauptsächlich weil ich mein WLAN-Passwort meines internen Netzes nicht den ganzen IoT-Geräten anvertrauen möchte) . Dieses ist Teil eines eigenen VLANs mit eigenem IP-Bereich und über den Router mit meinem anderen Netz verbunden, indem meine FHEM-Installation sowie meine HA-Bridge-Instanz läuft.

Logischerweise findet Alexa nun beim Suchen neuer Geräte meine HA-Bridge-Geräte nicht mehr, weil dabei, wenn ich das richtig verstehe, Multicast-Pakete verwendet werden, die nicht geroutet werden.

Erste Versuche mit einem IGMP Proxy auf meinem (OpenWrt)-Router waren nicht so wirklich erfolgreich. Aber vermutlich liegt das eher daran, dass ich noch nicht so recht kapiert habe, was ich da genau mache muss.

Hat jemand ein vergleichbares Szenario schon am Laufen und kann mir mal ein paar Denkanstöße geben?

Vielen Dank schon mal!