Neueste Beiträge

#11
MQTT / [HowTo] X-Sense Melder (SBS50 ...
Letzter Beitrag von Blablubblaber - 12 Mai 2026, 20:17:01
Hallo zusammen,

nach einigem Basteln und Optimieren möchte ich hier eine Anleitung teilen, wie man das X-Sense Rauchmelder-System nativ, lokal und komplett Cloud-frei über MQTT2 in FHEM integriert.

X-Sense hat mittlerweile eine native MQTT-Funktion in den SBS50 Basisstationen freigeschaltet. Das Problem beim direkten Einbinden über autocreate: FHEM wirft alle Melder in ein einziges Device, übermüllt die Readings mit Home-Assistant-Config-Daten und bei mehreren Basisstationen überschreiben sich die Melder gegenseitig.

Mit diesem Setup erreicht man folgendes:

  • Cloud-frei: Direkte, lokale MQTT-Verbindung.
  • Aufgeräumt: Die Basisstation arbeitet unsichtbar im Hintergrund als Router (bridgeRegexp).
  • Einzelgeräte: Jeder physikalische Melder bekommt ein eigenes FHEM-Device mit sauberen Readings (smokealarm_status, battery_status etc.).
  • Multi-Base Support: Mehrere Basisstationen stören sich nicht gegenseitig.
  • Rename-safe: Die Zuweisung erfolgt über die feste Hardware-ID ($DEF), man kann die Melder also völlig frei umbenennen (z.B. in XSense_Kueche), ohne dass die Zuordnung bricht.

Hier ist die Schritt-für-Schritt Anleitung:

Voraussetzung
  • FHEM MQTT2_SERVER ist aktiv (Port 1883).
  • In der X-Sense App bei der Basisstation in den Einstellungen unter "Mit Home Assistant verbinden" die IP eures FHEM-Servers eintragen (User/Passwort habe ich einfach einen . rein geschrieben da die Felder nicht leer bleiben dürfen) anschließend oben "MQTT-Verbindung" Aktivieren und unten auf "Speichern" klicken.

Schritt 1: Die Basisstation(en) zum "Router" machen
Sobald die Basisstation funkt, legt FHEM ein Device (z.B. SBS501500C04F) an. Wir löschen den Config-Müll, sperren autocreate und leiten die Signale an neue Geräte weiter.

Hinweis: Ersetzt in den folgenden Befehlen SBS501500C04F und SBS501500935D durch die tatsächliche ID eurer Basisstation!

Kopiert dies nacheinander in die FHEM-Kommandozeile:

deleteattr SBS501500C04F readingListdeletereading SBS501500C04F .*attr SBS501500C04F autocreate 0Die Magie passiert über bridgeRegexp. Signale von Basis 1 leiten wir an Geräte namens XSense_... weiter:

attr SBS501500C04F bridgeRegexp homeassistant/[^/]+/SBS501500C04F_([0-9A-F]+)/.*state:.* "XSense_$1"(Optional) Falls ihr eine 2. Basisstation habt (z.B. ID: SBS501500935D), macht ihr das Gleiche, leitet aber an XSense2_... weiter:

deleteattr SBS501500935D readingListdeletereading SBS501500935D .*attr SBS501500935D autocreate 0attr SBS501500935D bridgeRegexp homeassistant/[^/]+/SBS501500935D_([0-9A-F]+)/.*state:.* "XSense2_$1"Jetzt in der X-Sense App MQTT Deaktivieren und wieder Aktivieren, damit FHEM die Einzelgeräte (z.B. XSense_00000001, XSense2_00000001) anlegt!

Schritt 2: Die Melder filtern (readingList)
Jetzt filtern wir den JSON-Pfad sauber auf englische Begriffe runter und binden die Auswertung fest an die Hardware-DEF, um Übersprechen und Umbenennungs-Fehler zu vermeiden.

Für alle Melder der 1. Basisstation (XSense_...):
(Wichtig: Die ID der Basisstation SBS501500C04F im Pfad anpassen!)

attr XSense_.* autocreate 0attr XSense_.* readingList homeassistant/binary_sensor/SBS501500C04F_[^/]+/[^/]+/state:.* { my @t = split('/',$TOPIC);; my @p = split('_',$t[3]);; return if (InternalVal($NAME,"DEF","") !~ m/$p[1]$/);; return json2nameValue($EVENT, $p[-1].'_', $JSONMAP) }deletereading XSense_.* .*(Optional) Für alle Melder der 2. Basisstation (XSense2_...):


attr XSense2_.* autocreate 0attr XSense2_.* readingList homeassistant/binary_sensor/SBS501500935D_[^/]+/[^/]+/state:.* { my @t = split('/',$TOPIC);; my @p = split('_',$t[3]);; return if (InternalVal($NAME,"DEF","") !~ m/$p[1]$/);; return json2nameValue($EVENT, $p[-1].'_', $JSONMAP) }deletereading XSense2_.* .*Alles abspeichern:

saveDeaktiviert und Aktiviert nun noch mal MQTT in der X-Sense App. Eure FHEM-Geräte haben jetzt wunderschöne Readings wie smokealarm_status, online_status oder battery_status.

Schritt 3: Freies Umbenennen
Da die Filterung nun über InternalVal($NAME,"DEF","") läuft, könnt ihr die erzeugten Melder ab sofort kreuz und quer umbenennen, damit ihr wisst, wo es brennt. Das Routing bricht nicht ab!

rename XSense_00000001 XSense_Wohnzimmerrename XSense2_00000001 XSense2_FeWo_Schlafzimmer
Schritt 4: Globales Notify für den Feueralarm
Da die Readings jetzt bei allen Meldern absolut einheitlich heißen (egal ob Rauch, Hitze oder CO), reicht ein einziges, zentrales Notify für das ganze Haus. Dieser Code ist bereits für den FHEM-Optimierer angepasst, sodass keine Regex-Fehlermeldungen im Log landen.

define N_Haus_Feueralarm notify XSense.*:.*alarm_status:.*Detected|XSense.*:.*alarm_status:.*Cleared {
    my $melder = $NAME;;
    my $event = $EVENT;;
    my $status = $EVTPART1;;
   
    # Sensortyp extrahieren
    my ($typ) = $event =~ m/(smoke|co|heat)alarm_status/;;
    $typ //= "Unbekannt";;
   
    # Nachricht je nach Status anpassen
    my $msg;;
    if ($status =~ /Cleared/i) {
        $msg = "✅ ENTWARNUNG: Melder '$melder' meldet: $typ ($status)!";;
    } else {
        $msg = "🚨 ALARM! Melder '$melder' meldet: $typ ($status)!";;
    }
   
    fhem("set TelegramBot message $msg");;
}
(Natürlich TelegramBot durch euer eigenes Benachrichtigungs-Device ersetzen).

Testen lässt sich das notify mit
trigger XSense_FeWo_Schlafzimmer smokealarm_status: Detectedund
trigger XSense_FeWo_Schlafzimmer smokealarm_status: Cleared


Ich hoffe, diese Anleitung erspart dem ein oder anderen die nächtelange Fehlersuche mit Regulären Ausdrücken und Crosstalking-Effekten. Viel Spaß beim Nachbauen!
#12
Homematic / Anlegen von HM-IP FROLL schläg...
Letzter Beitrag von VolkerGBenner - 12 Mai 2026, 20:02:00
Hallo zusammen,

Ich versuche gerade ein HM-IP FROLL in FHEM einzubinden, stehe da aber etwas auf dem Schlauch.

Im HMCCU-device bekomme ich das Gerät über
get myCCU3 ccuDevices angezeigt.
Leinwand    HmIP-FROLL    HmIP-RF    00116269940885    8
KEY_TRANSCEIVER [2x]
SHUTTER_TRANSMITTER [1x]
SHUTTER_VIRTUAL_RECEIVER [3x]

Über
get myCCU3 createDev ist "Leinwand" aber nicht in der Auswahlliste. Sowohl CCU als auch FHEM wurden schon mehrfach neu gestartet.

Mit
get myCCU3 create Leinwand bekomme ich als Antwort
Results of create command:
Not detected CCU devices:
  Leinwand = 00116269940885 [Leinwand]

Ich kann "Leinwand" per manuellem define als *DEV oder *CHN anlegen und bekomme dann auch Readings-Aktualisierungen. Wenn ich ohne "defaults" definiere bekomme ich als Fehler noch
HMCCUDEV [Leinwand] Device type not known by HMCCU. Please set control and/or state channel with attributes controldatapoint and statedatapoint
angezeigt.
Ein
set Leinwand defaults update liefert
HMCCUDEV: Leinwand Cannot detect role of Leinwandund
set Leinwand defaults resetergibt
HMCCUDEV: Leinwand Device type HmIP-FROLL not known by HMCCU
Cannot detect role of Leinwand
Set version 4.3 attributes
und legt völlig falsche readingsfilter an.

Hier im Forum finde ich aber auch ältere Beiträge in denen FROLL schon funktioniert, ist also nichts Exotisches.

Jetzt brauch ich mal Input, wie ich weiter vorgehe. So einen Fall hatte ich noch nie.




#13
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von Mikel2906 - 12 Mai 2026, 20:01:01
Danke 300P,
die Idee ist gut.

attr DEVICE disabledForIntervals HH:MM-HH:MM HH:MM-HH:MM ist gesetzt.

Mal sehen was morgen mein LOG anzeigt.

VG
Michael
#14
Multimedia / Aw: Bose und soundcork und FHE...
Letzter Beitrag von betateilchen - 12 Mai 2026, 19:08:55
Zitat von: FlatTV am 07 Mai 2026, 22:50:40Also bei mir läuft der Soundcork nach dem Update nicht mehr.
http://ip:8000/docs kann ich noch aufrufen, beim Aufruf von http://ip:8000/ kommen nur Fehler.

Genau das Problem hatte ich heute auch. Sowohl der Aufruf von /admin als auch /miniapp liefen auf Fehler.

Irgendwann habe ich dann einen Blick in das error-Log von soundcork geworfen, und darin die (wahrscheinliche) Fehlerursache gefunden. Es wurde nach einer DeviceInfo.xml gesucht, die nicht gefunden wurde. Diese Fehlerausgabe hat offenbar den Server blockiert.

Nachdem ich in der Datenstruktur die entsprechende Datei angelegt hatte, war alles wieder in Ordnung, die Box lief problemlos und der Server zeigte alle Seiten an, die ich haben wollte.
#15
Sonstiges / Aw: Modul 96_SIP
Letzter Beitrag von betateilchen - 12 Mai 2026, 19:05:49
Ich habe auch die Fritzbox in Verdacht, vermutlich durch das letzte Update (8.25) irgendwas schiefgegangen.
#16
Homematic / Aw: Erweiterung einer HMConfig...
Letzter Beitrag von papa - 12 Mai 2026, 18:45:00
Bist Du Dir denn sicher, dass auch was gesendet wird ? Du müsstest laut dem Sketch folgende Ausgaben in der seriellen Konsole haben:

pm25avg: XXX, pm10avg: YYY
pm25max: ZZZ, pm10max: AAAA
pm25min: BBB, pm10min: CCC

Er sendet auch nicht gleich - sondern macht erst ein paar Messungen.
#17
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 12 Mai 2026, 18:43:11
Zitat von: Mikel2906 am 12 Mai 2026, 16:54:11Ich lese die Werte von meinem Stromzähler mit Tasmota und einem Schreib-Lesekopf ab. Das Komische an der ganzen Sache ist, dass das nur nachts passiert.
Ich habe auch die Zeitabstände für die Leseintervalle erhöht, um Lesefehler zu vermeiden. Hast du eine Idee, was ich ändern kann?

2026.05.12 02:31:51 1: PV_Prognose DEBUG> collect Energy Meter data - device: Smartmeter =>
2026.05.12 02:31:51 1: PV_Prognose DEBUG> gcon: 0 W, gfeedin: 8 W, contotal: 0 Wh, feedtotal: 11353700 Wh


2026.05.12 02:33:00 1: PV_Prognose DEBUG> collect Energy Meter data - device: Smartmeter =>
2026.05.12 02:33:00 1: PV_Prognose DEBUG> gcon: 0 W, gfeedin: 3 W, contotal: 17516900 Wh, feedtotal: 11353700 Wh
2026.05.12 02:33:00 1: PV_Prognose DEBUG> write to pvHistory - day: 12, hod: 3, GridConsumption (gcons): 17516900 Wh

a:
Könnte evtl. die Fritzbox sein
- wenn sie die Leitung nachts automatisch trennt, neu verbindet und sich neue IP holt.....
 :'(

b:
Wenn es immer in den gleichen Zeiträumen 02:00 bis 03:00 Uhr auftritt (Trick17)
- nutze so etwas wie attr DEVICE disabledForIntervals HH:MM-HH:MM HH:MM-HH:MM ...
(kommt auf das FHEM-Modul an mit dem du arbeitest - in MQTT2 ginge bei mir - brauch ich aber bei meinem TASMOTA nicht 
;) ;D
#18
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von Mikel2906 - 12 Mai 2026, 18:27:10
Danke Wolle02 für das Feedback
#19
Server - Linux / Aw: [Docker / Container] echod...
Letzter Beitrag von FlatTV - 12 Mai 2026, 18:25:25
Also wenn ich nur eine yml Datei auf meinem pi habe, startet der Container nicht.

name: alexa-cookie-service
alexa-cookie-service-1 exited with code 1 (restarting)
alexa-cookie-service-1  |
alexa-cookie-service-1  | > alexa-cookie-service@0.3.0 start
alexa-cookie-service-1  | > node src/server.js
alexa-cookie-service-1  |
alexa-cookie-service-1  | node:fs:1370
alexa-cookie-service-1  |   const result = binding.mkdir(
alexa-cookie-service-1  |                          ^
alexa-cookie-service-1  |
alexa-cookie-service-1  | Error: EACCES: permission denied, mkdir '/data/cookie-export'
alexa-cookie-service-1  |     at Object.mkdirSync (node:fs:1370:26)
alexa-cookie-service-1  |     at Object.<anonymous> (/app/src/server.js:13:4)
alexa-cookie-service-1  |     at Module._compile (node:internal/modules/cjs/loader:1705:14)
alexa-cookie-service-1  |     at Object..js (node:internal/modules/cjs/loader:1838:10)
alexa-cookie-service-1  |     at Module.load (node:internal/modules/cjs/loader:1441:32)
alexa-cookie-service-1  |     at Function._load (node:internal/modules/cjs/loader:1263:12)
alexa-cookie-service-1  |     at TracingChannel.traceSync (node:diagnostics_channel:328:14)
alexa-cookie-service-1  |     at wrapModuleLoad (node:internal/modules/cjs/loader:237:24)
alexa-cookie-service-1  |     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
alexa-cookie-service-1  |     at node:internal/main/run_main_module:36:49 {
alexa-cookie-service-1  |   errno: -13,
alexa-cookie-service-1  |   code: 'EACCES',
alexa-cookie-service-1  |   syscall: 'mkdir',
alexa-cookie-service-1  |   path: '/data/cookie-export'
alexa-cookie-service-1  | }
alexa-cookie-service-1  |
alexa-cookie-service-1  | Node.js v22.22.2
alexa-cookie-service-1  | npm notice
alexa-cookie-service-1  | npm notice New major version of npm available! 10.9.7 -> 11.14.1
alexa-cookie-service-1  | npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.14.1
alexa-cookie-service-1  | npm notice To update run: npm install -g npm@11.14.1
alexa-cookie-service-1  | npm notice
alexa-cookie-service-1 exited with code 1 (restarting)

cat alexa-cookie-service.yml
name: alexa-cookie-service
networks:
  fhem-net:
    external: true
services:
  alexa-cookie-service:
    image: ghcr.io/fhem/alexa-cookie-service:0.3.0
    volumes:
      - ./alexa-cookie-data:/data
      - ./fhem/cache/alexa-cookie:/opt/fhem/cache/alexa-cookie
    environment:
      HOST: 0.0.0.0
      PORT: 58080
      AUTH_TOKEN: 87b4feb87546bc9bca881d54dde1c3381f39711d5419dbfdb1b35c688db533fc
      DATA_DIR: /data
      STATE_FILE: /data/alexa-registration.json
      METADATA_FILE: /data/service-metadata.json
      COOKIE_EXPORT_DIR: /data/cookie-export
      # COOKIE_EXPORT_DIR: /opt/fhem/cache/alexa-cookie
      DEBUG_HTML_DIR: /data/debug-html
      AMAZON_PAGE: amazon.de
      BASE_AMAZON_PAGE: amazon.com
      ACCEPT_LANGUAGE: de-DE
      PROXY_PUBLIC_HOST: 192.168.178.188
      PROXY_LISTEN_BIND: 0.0.0.0
      PROXY_PORT: 58090
      PROXY_ONLY: true
      SETUP_PROXY: true
      APP_NAME: FHEM EchoDevice Cookie Service
      USE_HERMES: false
      REFRESH_SCHEDULE_HOURS: 24
      REFRESH_MIN_AGE_HOURS: 6
      REQUEST_TIMEOUT_MS: 30000
      LOG_LEVEL: combined
      TZ:   Europe/Berlin
    ports:
      - '58090:58090'
    networks:
      - fhem-net
    restart: unless-stopped
    user: '6061:6061'

So sieht das Verzeichnis aus:
571567 4 drwxrwxr-x  5 pi   pi   4096 May 12 18:12 .
 132722 4 drwx------ 22 pi   pi   4096 May 12 18:12 ..
1116707 4 drwxr-xr-x  2 root root 4096 May 12 18:12 alexa-cookie-data
 535855 4 -rw-rw-r--  1 pi   pi   1256 May 12 18:12 alexa-cookie-service.yml
 566774 4 drwxr-xr-x  4 6062 6062 4096 May 12 10:26 alexa-fhem
 535631 4 -rw-rw-r--  1 pi   pi    380 May 12 09:25 alexa-fhem.yml
 535633 4 -rw-rw-r--  1 pi   pi    847 May 12 09:20 deconz.yml
 535629 4 -rw-rw-r--  1 pi   pi    389 May 12 09:48 docker-compose.yml
 571777 4 drwxr-x--- 15 6061 6061 4096 May 12 15:51 fhem
 535888 4 -rw-rw-r--  1 pi   pi   1837 May 12 16:47 fhem.yml
 535628 4 -rw-rw-r--  1 pi   pi    408 May 12 09:03 openccu.yml
 535619 4 -rw-rw-r--  1 pi   pi    560 May 12 09:58 portainer.yml
 

//edit
Wenn der Ordner von fhem angelegt wurde, geht das auch.
Ich habe das mal mit sudo chown -R 6061:6061 alexa-cookie-data/ simuliert.
#20
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von Wolle02 - 12 Mai 2026, 18:23:39
Ich verwende auch jeweils einen Lesekopf an zwei Stromzählern; diese sind per USB an einen RaspPi angeschlossen auf dem Fhem läuft. Die Daten lese ich mit dem OBIS Modul aus. Das Ganze funktioniert seit Jahren sehr zuverlässig und stabil.