Hauptmenü

Bosch Smart Home in Fhem

Begonnen von emilio_35, 18 November 2017, 18:24:14

Vorheriges Thema - Nächstes Thema

dwi

Weil Bosch bei mir jetzt auf mehrere Anfragen gar nicht reagiert hat und auch tink sich blöd gestellt hat, bin ich jetzt bei homematic gelandet..
Funktioniert soweit auch tadellos und hat viele weitere Sensoren, die Bosch so direkt nicht bietet. Schade drum.

freakadings

Ja, mich nervt's auch langsam, habe zwar nur 4 Heizkörperthermostate und 5 Tür-/Fensterkontakte aber die so günstig bekommen, dass ich sie ungern eintauschen möchte...


freakadings

Kann man eigentlich die bosch-geräte Homematic (IP) zuweisen?
Wenn das ginge, könnte man sich so eine Homematic (IP) Zentrale holen und die in FHEM integrieren?!
Evtl. als Übergangslösung bis Bosch endlich die API hinterherschiebt...

dwi

Ich hatte dazu tatsächlich gelesen, dass man manche Bosch Smart Home Geräte an eine CCU anlernen kann (nicht an den Access Point).
Aber da kommt es auch auf die Komponenten an und spätestens bei Firmware Updates hat man dann Pech. Nervt halt total, dass die ganze Smart Home Geschichte so ohne generelle Protokolle daher kommt.

philn


freakadings

Zitat von: philn am 03 November 2019, 20:22:48
Bosch hat die API inzwischen veröffentlicht:
https://github.com/BoschSmartHome/bosch-shc-api-docs

\o/ klasse!
Und vor allem gut für Bosch, da wir demnächst umziehen und dann mehr Komponenten benötigen, hatte ich schon überlegt zu wechseln...

Verkehrsrot

Arbeitet jemand an diesem Thema? Eventuell gemeinsam ein Github Repo anlegen?

CoolTux

Zitat von: Verkehrsrot am 03 Februar 2020, 10:16:15
Arbeitet jemand an diesem Thema? Eventuell gemeinsam ein Github Repo anlegen?

Wenn ein gemeinsames Git Repo dann kann man auch gleich bei
https://github.com/fhem
das ganze machen  ;)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Docter

Hallo,

gibt es an der Bosch Smart Home Front was neues?
Würde gern ein paar Geräte in mein FHEM einbinden, aber bisher nichts brauchbares gefunden.

Vielen Dank

freakadings

Huhu, leider nicht, gehe derzeit den Weg über ioBroker, dort gibt es bereits ein Modul für das Bosch Smart Home.

Über das FHEM-Modul kann ich aber die Daten empfangen und auch welche senden. Das ist leider nicht optimal, vor allem nicht, da ich ioBroker alleine dafür laufen habe.

freakadings

Wer mir es gleich tun möchte/muss, für den fasse ich das hier mal zusammen, habe es gerade selber erst wieder machen müssen.

(Es sieht viel mehr aus, als es ist. Ich habe viel dazu geschrieben, also keine Angst :) )



Voraussetzungen
Im wesentlichen ist die Anleitung vom fhem-adapter für iobroker die Richtlinie: https://github.com/iobroker-community-adapters/ioBroker.fhem/tree/master/docs/de

a) In FHEM muss der telnetport vorhanden sein und ein zugehöriges allowed device.
define telnetPort telnet 7072 global
Das Wörtchen "global" nicht vergessen, habe ich gemacht, dauert bis man den Fehler findet ;)

b) Das allowed Device anlegen und ein Passwort vergeben. Das ist dann wichtig für den iobroker-fhem-adapter.
define allowed_telnetPort allowed
set allowed_telnetPort password meinPasswort


c) ioBroker installieren (ob auf dem gleichen System oder einem anderen ist egal) Hier gibt es 1001 Tutorials, das spare ich mir.


1. In ioBroker den Adapter "FHEM connection" suchen (links auf "Adapter" dann mittig das Suchfeld nutzen),
hinzufügen (rechts auf das + im Kreis)
und wie folgt konfigurieren (falls es nicht aufploppt: links auf "Instanzen", dann auf den Schraubenschlüssel bei fhem.0):

"FHEM Telnet IP" die IP eures fhem-servers eintragen. zB: 192.168.0.50
"FHEM Telnet Port" der Port den ihr in Fhem beim telnet-device vergeben habt. zB: 7072
"Kennwort" und "Kennwort-Wiederholung" das beim allowed_telnetPort gesetzte Passwort. zB: meinPasswort
"Prompt" hier sollte schon "fhem>" stehen (ohne "")
-> "Speichern und Schließen" klicken


Jetzt sollte die Verbindung aufgebaut werden und das Icon grün werden und in FHEM der Raum "ioB_System" mit 2 Geräten auftauchen.

2. Bosch Adapter installieren:
wie oben nach dem "Bosch Smart Home Bridge" Adapter suchen und diesen hinzufügen.
In der Konfiguration des Adapters die IP-Adresse eurer Bridge eintragen und das Passwort, dass ihr auch an der App eingeben müsst, bzw. dort festgelebt hattet (NICHT das hinten auf dem Gerät).
-> "Speichern und Schließen" klicken und zum Smarthome Contoller laufen und den Pairing-Button für ein paar Sekunden (bis er blinkt) drücken.

Jetzt sollte das Icon bei der Instanz auch grün werden. Falls nicht, noch mal den Pairing Button drücken.

3. Jetzt müsst ihr auswählen welche Geräte ihr gerne in FHEM hättet. Am Beispiel der Heizkörper Thermostate:
Ich brauche nicht jeden einzelnen Thermostat, sondern eigentlich nur den Raum, falls ihr die Einzelnen Geräte haben wollt müsst ihr einfach jedes einzeln hinzufügen, wie auch die Räume, die ich jetzt nehme.
Geht unter links "Objekte" und dann klappt mittig "bshb.0" auf.
Die einzelnen Geräte (zumindest meine) fangen alle mit "hdm:HomeMaticIP:..." an. Die Räume aber mit "roomClimateControl_hz_".
Fahrt ihr mit der Maus über bspw. "roomClimateControl_hz_2" (nicht klicken) erscheint neben dem Namen ein kleines weißes symbol, klickt darauf das kopiert den Pfad bis dorthin in die Zwischenablage. zB: bshb.0.roomClimateControl_hz_2

4. Das Kopierte muss jetzt in der Zeile "allowedIOBin" unter
fhem.0
->info
->->Configurations

in die (7.) Spalte "Wert" eingefügt werden. Mehrere Räume einfach mit Komma ohne Leerzeichen einfügen. zB.: bshb.0.roomClimateControl_hz_2,bshb.0.roomClimateControl_hz_3,,bshb.0.hdm:HomeMaticIP:3014F733A0000096D858H9BA

Das macht ihr mit allem was ihr in FHEM haben wollt. Auch nur einzelne Werte sollten möglich sein und sind recht Sinnvoll. Denn für jeden Wert den euer hier eingefügtes Objekt hat, wird in FHEM ein extra Dummy erstellt.

5. FHEM Adapter einmal neu starten, dann tauchen alle Werte als einzelne Dummys in FHEMim neuen Raum "ioB_IN" auf.

6. Jetzt kommt der Teil in FHEM, der alles schöner und bedienbar macht.

6a) Ich habe für jede "Raumheizung" noch einen Dummy angelegt in welchem dann alle Werte zusammenlaufen und den ihr "normal" in eure Räume einbinden könnt:

Hier zwei Beispiele für Wohnzimmer und Schlafzimmer (die sind bis auf name, alias und room identisch)

define Heizung_Wohnzimmer dummy
attr Heizung_Wohnzimmer alias Heizung Wohnzimmer
attr Heizung_Wohnzimmer event-on-change-reading .*
attr Heizung_Wohnzimmer group Heizung
attr Heizung_Wohnzimmer icon sani_heating
attr Heizung_Wohnzimmer readingList setpointTemperature
attr Heizung_Wohnzimmer room Wohnzimmer
attr Heizung_Wohnzimmer setList setpointTemperature:slider,14,1,30
attr Heizung_Wohnzimmer stateFormat Gemessen: temperature°C - Low: low
attr Heizung_Wohnzimmer webCmd setpointTemperature

define Heizung_Schlafzimmer dummy
attr Heizung_Schlafzimmer alias Heizung Schlafzimmer
attr Heizung_Schlafzimmer event-on-change-reading .*
attr Heizung_Schlafzimmer group Heizung
attr Heizung_Schlafzimmer icon sani_heating
attr Heizung_Schlafzimmer readingList setpointTemperature
attr Heizung_Schlafzimmer room Schlafzimmer
attr Heizung_Schlafzimmer setList setpointTemperature:slider,14,1,30
attr Heizung_Schlafzimmer stateFormat Gemessen: temperature°C - Low: low
attr Heizung_Schlafzimmer webCmd setpointTemperature



6b) Dieses Notify überträgt die werte aus den einzelnen Dummys, die iobroker automatisch angelegt hat in die von euch angelegten.
Es muss für jede Heizung ein extra elsif angelegt werden.
Kopiert einfach eines (

elsif($NAME =~ /hz_4./){\
fhem("setreading Heizung_Schlafzimmer $reading $EVENT");;\
}


) ändert den Teil mit "hz_4" in zB "hz_5" (muss natürlich euren Heizungen (siehe punkt 3) entsprechen) und teilt ihm mit in welchen "Heizung_raumname"-Dummy, die Werte übertragen werden sollen. Hier mal mit drei Räumen dargestellt.



define notify_HeizungBoschEventSetter notify bshb.0.roomClimateControl_hz_.* {\
my $reading = "test";;\
\
if( $NAME =~ /\.([^. ]+)$/) { $reading = $1;; }\
\
if($NAME =~ /hz_2./){\
fhem("setreading Heizung_Wohnzimmer $reading $EVENT");;\
}elsif($NAME =~ /hz_3./){\
fhem("setreading Heizung_Badezimmer $reading $EVENT");;\
}elsif($NAME =~ /hz_4./){\
fhem("setreading Heizung_Schlafzimmer $reading $EVENT");;\
}\
\
}
attr notify_HeizungBoschEventSetter DbLogExclude .*
attr notify_HeizungBoschEventSetter alias notify_HeizungBoschEventSetter
attr notify_HeizungBoschEventSetter group Heizung
attr notify_HeizungBoschEventSetter room Logik



6c) Zu guter Letzt müsst ihr noch Werte an iobroker schicken können, da die Heizung ja auch eingestellt und nicht nur ausgelesen werden soll.
iobroker hat euch da schon automatisch in ioB_System einen dummy angelegt, über den ihr daten schicken könnt.
Hier läuft es quasi andersrum als unter 6b. Es muss für jeden eurer Dummys in dem ihr dann den Wert einstellt, der entsprechende Heizungsraum in iobroker angesprochen werden.
Hier auch euren Dummynamen und .."hz_x" entsprechend anpassen.

define notify_setRoomTemperature notify .*:setpointTemperature:.* {\
if($NAME eq "Heizung_Wohnzimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_2.RoomClimateControl.setpointTemperature $EVTPART1");;\
}elsif($NAME eq "Heizung_Badezimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_3.RoomClimateControl.setpointTemperature $EVTPART1");;\
}elsif($NAME eq "Heizung_Schlafzimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_4.RoomClimateControl.setpointTemperature $EVTPART1");;\
}\
}
attr notify_setRoomTemperature DbLogExclude .*
attr notify_setRoomTemperature alias notify_setRoomTemperature
attr notify_setRoomTemperature disable 0
attr notify_setRoomTemperature group Heizung
attr notify_setRoomTemperature room Logik






===========================

Jetzt sollte alles funktionieren.
Die Readings gondeln mit der Zeit dann bei euren eigenen Dummys ein. Zur Kontrolle habe ich die Bosch-App am Handy geöffnet und geschaut ob in der App was passiert wenn ich in FHEM einen Wert ändere und auch umgekehrt.

Ich hoffe es war verständlich. Bei Fragen einfach losschießen :)




freakadings

So, Nachtrag:

Um die Heizkörperthermostate mit beliebigen Tür-/Fensterkontakten zu einer Lüftungserkennung zu bewegen habe ich heute ein wenig gebastelt.
Leider kann man den LOW-Modus (wenn am Thermostat selbst "LOW" auf dem Display steht) nicht direkt auslösen. Ein workaround der aber funktioniert ist, den summerMode (5°C) für den Raum zu setzen, in dem man gerade lüftet. Alternativ kann man natürlich einfach die Temperatur auf 8°C setzen, allderings wird dann nicht "OFF" auf dem Thermostat angezeigt.

Zuerst habe ich ein structure angelegt, das den state "Geschlossen" hat, wenn alle tür/fensterkontakte in unserem Hauptzimmer ("Tuer_Fenstersensor_EG_HZ" das sind Küche, Ess- und Wohnbereich) und "Geöffnet" wenn das nicht der Fall ist.
Das ist optimal, denn wenn ein Sensor wegbricht (zB weil der Akku leer ist) dann denkt das System, dass ein Fenster geöffnet ist. Aber ich denke, dass das Risiko gering ist.

defmod st_lueften_HZ structure Hauptzimmer Tuer_Fenstersensor_EG_HZ_.*
attr st_lueften_HZ alias Fenster im Hauptzimmer
attr st_lueften_HZ eventMap /closed:Geschlossen/undefined:Geöffnet/
attr st_lueften_HZ group Türen und Fenster
attr st_lueften_HZ room Erdgeschoss,Logik


Dann folgt ein Notify, im Prinzip das gleiche, das auch auf die Temperatur reagiert, allerdings wird hier eben der summerMode übergeben:
(Und ja, man hätte sicherlich mit ein bisschen RegEx-Voodoo beide kombinieren können.)

defmod notify_setSummerMode notify .*:summerMode:.* {\
if($NAME eq "Heizung_Wohnzimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_2.RoomClimateControl.summerMode $EVTPART1");;\
}elsif($NAME eq "Heizung_Badezimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_3.RoomClimateControl.summerMode $EVTPART1");;\
}elsif($NAME eq "Heizung_Schlafzimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_4.RoomClimateControl.summerMode $EVTPART1");;\
}elsif($NAME eq "Heizung_EG_GaesteWC"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_6.RoomClimateControl.summerMode $EVTPART1");;\
}elsif($NAME eq "Heizung_EG_Flur"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_7.RoomClimateControl.summerMode $EVTPART1");;\
}elsif($NAME eq "Heizung_UG_GS"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_8.RoomClimateControl.summerMode $EVTPART1");;\
}elsif($NAME eq "Heizung_Vinezimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_9.RoomClimateControl.summerMode $EVTPART1");;\
}elsif($NAME eq "Heizung_DG_Gaestezimmer"){ \
fhem("set fhem.0.send2ioB bshb.0.roomClimateControl_hz_10.RoomClimateControl.summerMode $EVTPART1");;\
}\
}
attr notify_setSummerMode alias notify_setSummerMode
attr notify_setSummerMode group Heizung
attr notify_setSummerMode room Logik


Zu guter Letzt noch die eigentliche Erkennung, umgesetzt in einem doif:

defmod doif_lueftungserkennung_HZ DOIF ([st_lueften_HZ:"Geöffnet.*"])\
(setreading Heizung_Wohnzimmer summerMode true)\
DOELSE\
(setreading Heizung_Wohnzimmer summerMode false)
attr doif_lueftungserkennung_HZ alias doif_lueftungserkennung_HZ
attr doif_lueftungserkennung_HZ group Heizung
attr doif_lueftungserkennung_HZ room Logik
attr doif_lueftungserkennung_HZ verbose 2
attr doif_lueftungserkennung_HZ wait 150


Das "wait"-Attribut habe ich hier auf 150sek, (2:30min) gesetzt und kann von euch natürlich entsprechen angepasst werden.
Ihr könnt es auch ganz weglassen, allerdings fand ich das weniger sinnvoll, da wenn man kurz das Fenster öffnet oder auf die Terrasse will würde sofort der Motor der Thermostate aktiv und das kostet nur unnötig Batterie.

Ich hoffe das hilft jemandem :)

justme1968

keine ahnung ob es noch jemanden interessiert. bzw. ob es noch bosch smart home anwender gibt. meine beiden postings mit fragen zum system sind immer noch unbeantwortet :)

ich finde die twinguard rauch melder ganz interessant und habe gerade einen zur probe hier. wenn er sich bewährt soll er mit ein paar anderen in fhem integriert werden. dazu habe ich gerade ein modul für das native api des bosch controllers angefangen und bekomme seit eben die ersten werte in fhem.

falls es noch andere Interessenten für die integration gibt einfach mal melden...
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Cobra

Hey justme1968.

ich fände es klasse wenn es direkt in FHEM integriert werden könnte da ich inzwischen auch das eine oder andere Gerät von Bosch nutze.

Kann gerne (sofern es mit die Zeit erlaubt) helfen beim Testen.

Gruß Cobra
FHEM in Docker auf Synology, CCU3,
Diverse HM-Komponenten, Netatmo, Hue, Sonos, Nuki

justme1968

wie sind denn deine erfahrungen mit dem system? hat du komponenten die nicht homematic basiert sind?
zufällig die tinguard rauchmelder?  vielleicht kannst du ja hier: https://forum.fhem.de/index.php/topic,125568.msg1201892.html#msg1201892 etwas dazu sagen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968