NOCH IN ENTWICKLUNG! - Ich werde dies nach und nach vervollständigen.
Liebe FHEM-Community,
gerne möchte ich euch, als Dank für viele andere Lösungen, meine Lösung inkl. Anleitung mit HomeKit und Alexa-Einbindung vorstellen.
Nachdem etliche Jahre vergangen sind und etliche Anfragen zu einer Lösung hier (https://www.google.de/search?q=schellenberg+fhem+site%3Aforum.fhem.de) gekommen sind, fand ich eine elegante Lösung.
Kurz Zusammengefasst, wie ich vorgehe:Es wird eine Clientverbindung (wie von der Smartphone-App SmartFriends) zur Bridge der Shellenberg-Devices aufgebaut und durchgängig beibehalten. Befehle lassen sich lesen oder senden über MQTT, was wir wiederum in FHEM nutzen.
Shellenberg-Funk Rollo <- SmartFriends-Bridge oder SH1 <-> smart-friends-bridge-api <-> MQTT <-> Modul MQTT-Client <-> Modul ROLLOWelche Funktionen stehen zur Verfügung:- Shellenberg-Rollos hoch und runterfahren
- Dank ROLLO-Modul: Die Rollo-Position wird in 10%-Schritten von 0% (offen) bis 100% (geschlossen) zwischengespeichert
- Optional: Kostenlose Alexa-Einbindung und HomeKit-Einbindung
Dank geht auch an:
airthusiast - https://github.com/airthusiast/smart-friends-bridge
Was habe ich verwendet:
- FHEM auf einem (bevorzugt) Raspberry mit Raspbian (normale Version)
- FHEM Modul MQTT eingerichtet - https://wiki.fhem.de/wiki/MQTT
- npm
- SmartFriends-Bridge oder SH1 und bereits eingerichtet/konfiguriert und mit der App auf dem Smartphone verbunden
- Shellenberg Funk-Rollo verbaut
Installation:1. Zuerst eine SSH-Verbindung zum Raspberry als pi aufbauen und folgende Befehle ausführen:
npm install https://github.com/airthusiast/smart-friends-bridge.git
2. Die Konfigurationsdatei muss jetzt angepasst werden. Hierzu bitte diese Seite besuchen und die Informationen übernehmen: - Anleitung, wo man spezielle Angaben findet (https://github.com/airthusiast/smart-friends-bridge/blob/master/README.md#configuration-and-first-start)
nano /home/pi/node_modules/smart-friends-bridge/config.json.sample
Zusätzlich noch die MQTT Daten für die FHEM-Verbindung eintragen:
"mqtt": {
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin"
},
3. Danach speichern und umbenennen:
mv /home/pi/node_modules/smart-friends-bridge/config.json.sample /home/pi/node_modules/smart-friends-bridge/config.json
4. Jetzt einen Test ausführen
node /home/pi/node_modules/smart-friends-bridge /home/pi/node_modules/smart-friends-bridge/config.json
5. Wenn alles einwandfrei funktioniert, einen Autostart anlegen und den Prozess im Hintergrund zum laufen bringen
sudo nano /etc/systemd/system/smartfriendshome.service
Folgende Daten einfügen:
[Unit]
Description=Smart Friends Home
After=syslog.target network-online.target
[Service]
Type=simple
User=pi
EnvironmentFile=
ExecStart=node /home/pi/node_modules/smart-friends-bridge /home/pi/node_modules/smart-friends-bridge/config.json
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
6. Speichern und folgende Befehle danach ausführen:
sudo systemctl daemon-reload
sudo systemctl enable smartfriendshome
sudo systemctl start smartfriendshome
sudo systemctl status smartfriendshome
Jetzt läuft der Dienst im Hintergrund und es müsste schon eine erfolgreiche Verbindung in FHEM-MQTT vorhanden sein.
7. Das kommende Beispiel beruht auf ein Rollo im Schlafzimmer. Die folgende Device-ID lautet "14700". Device ID wird hier erklärt (https://github.com/airthusiast/smart-friends-bridge/blob/master/README.md#collect-device-ids).
define mqtt_rollo_sz MQTT2_DEVICE
attr mqtt_rollo_sz readingList schellenberg/device/value/14700:.* cover_state
attr mqtt_rollo_sz room System
attr mqtt_rollo_sz setList up:noArg schellenberg/device/value/update/14700 1\
stop:noArg schellenberg/device/value/update/14700 0\
down:noArg schellenberg/device/value/update/14700 2
8. Jetzt ein Set-Befehl ausführen, ob das Device auch funktioniert:
set mqtt_rollo_sz down
set mqtt_rollo_sz up
9. Wenn alles funktioniert, dann legen wir das mächtige ROLLO-Device an, wodurch wir dann alle Möglichkeiten der perfekten Einbindung haben:
define rollo_sz ROLLO
attr rollo_sz alexaName Rollo Schlafzimmer
attr rollo_sz alias Rollo Schlafzimmer
attr rollo_sz cmdIcon closed:control_centr_arrow_down stop:audio_stop open:control_centr_arrow_up
attr rollo_sz devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_10:open pct-90:fts_shutter_10:closed pct-80:fts_shutter_20:closed pct-70:fts_shutter_30:closed pct-60:fts_shutter_40:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_60:open pct-30:fts_shutter_70:open pct-20:fts_shutter_80:open pct-10:fts_shutter_90:open pct-0:fts_shutter_100:closed
attr rollo_sz genericDeviceType blind
attr rollo_sz group Rolladen
attr rollo_sz icon fts_shutter_1w
attr rollo_sz rl_autoStop 1
attr rollo_sz rl_commandDown set mqtt_rollo_sz down
attr rollo_sz rl_commandStop set mqtt_rollo_sz stop
attr rollo_sz rl_commandUp set mqtt_rollo_sz up
attr rollo_sz rl_excessBottom 0
attr rollo_sz rl_excessTop 0
attr rollo_sz rl_secondsDown 19
attr rollo_sz rl_secondsUp 18
attr rollo_sz rl_switchTime 2
attr rollo_sz rl_type HomeKit
attr rollo_sz room Home,HomeKit,Räume->Schlafzimmer
attr rollo_sz webCmd open:closed:stop
Dieses Device ist schon für Homebridge und Alexa vorkonfiguriert und auch einsetzbar.
Danke für den Beitrag, beim Umsetzen ist mir noch aufgefallen, dass das Config-File statt des $ im systemd unit file angegeben werden muss, sonst startet (zumindest auf meinem RPi 4B) das Interface nicht.
ExecStart=node /home/pi/node_modules/smart-friends-bridge /home/pi/node_modules//smart-friends-bridge/config.json
Ansonsten bin ich noch am Experimentieren, die Rollläden fahren manchmal, aber nicht immer.
Mit meiner Box sind
- Schellenberg Rohrmotor mit Funkmodul
- Schellenberg Schalter (zur Steuerung "normaler" Rohrmotoren)
- Schellenberg Gurtwickler und
- ABUS Rauchmelder
verbunden. Ich probiere mal aus, ob ich dazu hier passende Devices posten kann.
Die Schalter und die Gurtwickler listen 3 Devices (Motor, Position und Status), die Rauchmelder 2 (Batterie in % und Rauchmelder 0 und wohl 1)
Mit der aktuellen Firmware in der Smartfriends-Box funktioniert es bei mir wie folgt: Die Statusseite liefert je Gerät drei IDs, status, motor und position. Status habe ich mal aufgenommen, ist aber ohne Funktion. Position funktioniert bei den Gurtwicklern Premium und bei den Funkwandschaltern Premium (die einen "dummen" Motor ansteuern) und lässt damit eine pct Steuerung zu:
Gurtwickler/Wandschalter
defmod <name> MQTT2_DEVICE
attr <name> devStateIcon up:fts_shutter_10:down [0-9]:fts_shutter_10:down 100:fts_shutter_100:up down:fts_shutter_100:up 5[0-9]:fts_shutter_50:down 9[0-9]:fts_shutter_90:down 8[0-9]:fts_shutter_80:down 7[0-9]:fts_shutter_70:down 6[0-9]:fts_shutter_60:down 5[0-9]:fts_shutter_50:down 4[0-9]:fts_shutter_40:up 3[0-9]:fts_shutter_30:up 2[0-9]:fts_shutter_20:up 1[0-9]:fts_shutter_10:up
attr <name> genericDeviceType blind
attr <name> readingList schellenberg/device/value/<motor>:.* motor\
schellenberg/device/value/<status>:.* status\
schellenberg/device/value/<position>:.* pct\
schellenberg/device/value/<position>:.* state
attr <name> room MQTT2_DEVICE
attr <name> setList up:noArg schellenberg/device/value/update/<motor> 1\
stop:noArg schellenberg/device/value/update/<motor> 0\
down:noArg schellenberg/device/value/update/<motor> 2\
pct:slider,0,1,100 schellenberg/device/value/update/<position> $EVTPART1
Beim Rolladenmotor Premium funktioniert bei mir nur die Ansprache über die Motor-ID, dafür braucht man dann zusätzlich ein ROLLO Device, wenn man mehr als "auf" und "ab" realisieren möchte.
defmod <name> MQTT2_DEVICE
attr <name> devStateIcon up:fts_shutter_10:down down:fts_shutter_100:up
attr <name> genericDeviceType blind
attr <name> readingList schellenberg/device/value/<motor>:.* cover_state
attr <name> room MQTT2_DEVICE
attr <name> setList up:noArg schellenberg/device/value/update/<motor> 1 \
stop:noArg schellenberg/device/value/update/<motor> 0 \
down:noArg schellenberg/device/value/update/<motor> 2
Den ABUS Rauchmelder habe ich wie folgt eingebunden:
defmod <name> MQTT2_DEVICE
attr <name> devStateIcon 0:Wecker.Wochentags 1:Wecker.Immer
attr <name> icon secur_smoke_detector
attr <name> readingList schellenberg/device/value/<batterie>:.* batterie\
schellenberg/device/value/<state>:.* state
und sorge mit einem Notify dafür, dass bei einem Alarm die Rollläden an den Terassentüren hochfahren, so dass dieser Fluchtweg offensteht.