MQTT2_FHEM_Server - autocreate - gelöst

Begonnen von Müller, 10 Dezember 2020, 23:42:58

Vorheriges Thema - Nächstes Thema

Müller

Hallo,

ich habe mir mal voller Motivation mein FHEM zuschossen (den zigbee Anteil) und habe
nun versucht das neu zu installieren nach Wiki "MQTT2-Module - Praxisbeispiele" https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#zigbee2mqtt
Nun habe ich das Problem dass neue Devices in FHEM nicht automatisch angelegt werden.
In die "configuration.yaml" von zigbee werden die neuen Devices eingetragen, aber in FHEM kommt nichts an. Kann mir jemand einen Tipp geben, wo mein Fehler liegt?

Danke

defmod MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server autocreate simple
attr MQTT2_FHEM_Server room MQTT2_DEVICE,system

setstate MQTT2_FHEM_Server 2020-12-10 23:02:39 RETAIN {"tele/DVES_4FA9CE/LWT":"Online","tele/Heizung/LWT":"Online","zigbee2mqtt/bridge/config":"{\u0022commit\u0022:\u00220514204\u0022,\u0022coordinator\u0022:{\u0022meta\u0022:{\u0022maintrel\u0022:3,\u0022majorrel\u0022:2,\u0022minorrel\u0022:6,\u0022product\u0022:0,\u0022revision\u0022:20190608,\u0022transportrev\u0022:2},\u0022type\u0022:\u0022zStack12\u0022},\u0022log_level\u0022:\u0022info\u0022,\u0022network\u0022:{\u0022channel\u0022:11,\u0022extendedPanID\u0022:\u00220xdddddddddddddddd\u0022,\u0022panID\u0022:6754},\u0022permit_join\u0022:true,\u0022version\u0022:\u00221.16.2\u0022}","zigbee2mqtt/bridge/state":"online"}
setstate MQTT2_FHEM_Server 2020-12-10 23:08:01 nrclients 0
setstate MQTT2_FHEM_Server 2020-12-10 23:08:01 state Initialized



defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi
attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server
attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
attr MQTT2_zigbee_pi comment To check for new updates of the deamon software, you might want to use a separate HTTPMOD device. See HTTPMOD template zigbee2mqtt_daemon_updates for further details.
attr MQTT2_zigbee_pi devicetopic zigbee2mqtt
attr MQTT2_zigbee_pi getList devicelist:noArg log $DEVICETOPIC/bridge/config/devices\
  networkmap_raw:noArg raw $DEVICETOPIC/bridge/networkmap raw\
  networkmap_graphviz:noArg graphviz $DEVICETOPIC/bridge/networkmap graphviz
attr MQTT2_zigbee_pi icon mqtt
attr MQTT2_zigbee_pi model zigbee2mqtt_bridge
attr MQTT2_zigbee_pi room MQTT2_DEVICE
attr MQTT2_zigbee_pi setList log_level:debug,info,warn,error $DEVICETOPIC/bridge/config/log_level $EVTPART1\
  permit_join:true,false $DEVICETOPIC/bridge/config/permit_join $EVTPART1\
  remove:textField $DEVICETOPIC/bridge/config/remove $EVTPART1\
  ota_update:textField $DEVICETOPIC/bridge/ota_update/update $EVTPART1\
  ota_update_check:textField $DEVICETOPIC/bridge/ota_update/check $EVTPART1\
  y_device_setting:textField $DEVICETOPIC/$EVTPART1/set {"$EVTPART2": "$EVTPART3"}\
  x_bind:textField $DEVICETOPIC/bridge/bind/$EVTPART1 $EVTPART2\
  x_bind_unbind:textField $DEVICETOPIC/bridge/unbind/$EVTPART1 $EVTPART2\
  x_device_options:textField $DEVICETOPIC/bridge/config/device_options {"friendly_name":"$EVTPART1","options": {"$EVTPART2": "$EVTPART3"}}\
  x_group_add_to:textField $DEVICETOPIC/bridge/group/$EVTPART1/add $EVTPART2\
  x_group_rm_from:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove $EVTPART2\
  x_group_rm_from_all:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove_all $EVTPART2\
  x_group_add_group:textField $DEVICETOPIC/bridge/config/add_group $EVTPART1\
  x_group_rm_group:textField $DEVICETOPIC/bridge/config/remove_group $EVTPART1\
  z_elapsed:textField $DEVICETOPIC/bridge/config/elapsed $EVTPART1\
  z_last_seen:disable,ISO_8601,epoch,ISO_8601_local $DEVICETOPIC/bridge/config/last_seen $EVTPART1\
  z_ban:textField $DEVICETOPIC/bridge/config/ban $EVTPART1\
  z_rename:textField $DEVICETOPIC/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
  z_reset_CC:noArg $DEVICETOPIC/bridge/config/reset
attr MQTT2_zigbee_pi setStateList on off

setstate MQTT2_zigbee_pi ON

FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Beta-User

autocreate kann nur aktiv werden, wenn überhaupt was am Server ankommt.

Die erste Frage lautet daher: Warum ist das hier so?
setstate MQTT2_FHEM_Server 2020-12-10 23:08:01 nrclients 0
Es findet also kein Gerät den Weg zum Server, was mit ziemlicher Sicherheit an der Netzwerk- und MQTT-konfiguration deiner Geräte liegt (falsche IP-Adresse, falscher Port).

PS+OT: das autocreate-Attribut am Server kannst du auch löschen; das ist der default beim MQTT2_SERVER.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Müller

Hallo Beta-User,

ja die Kommunikation zwischen zigbee2mqtt2 und FHEM_Server funktioniert nicht.

PORT 1883 ist OK.

Tasmota Geräte funktionieren.
Angelernte Zigbee Geräte tauchen in der  configuration.yaml von zigbee auf aber nicht in FHEM.
Hättest du noch einen Tipp zur Kommunikation zwischen Zigbee und FHEM ?
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Beta-User

Wie soll irgendjemand diese Frage beantworten, der keine Ahnung hat, was auf welchem Rechner installiert und konfiguriert ist?

Wenn es derselbe Rechner ist, sollte in der yaml-MQTT-Konfiguration "127.0.0.10" (=>localhost) als MQTT-Server-Adresse stehen und nicht die externe.

Und wenn die Tasmota-Clients steuerbar sind, ist nrclients auch nicht auf "0", andernfalls ist irgendwas mit deinem Netzwerk kaputt. Dazu fehlt aber jede Angabe (Grummel!).

Hast du denn nur Leuchten oder auch Sensoren?
Denn Leuchten/switches etc. muss man einmal selbst schalten, damit überhaupt was von denen zurückkommt.
Kannst du über das bridge-Gerät denn die Geräteliste abfragen? (get ... devicelist)

Wenn ja, hast du das Wiki ungenau gelesen (da steht, dass man Schaltbefehle absetzen muss, oder?). ansonsten wäre komisch, wenn  zigbee2mqtt überhaupt startet (?), denn eigentlich wartet das, bis der MQTT-Server verfügbar ist. Jedenfalls war das früher mal so, kann ja sein, dass das zwischenzeitlich geändert wurde.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Müller

Ich habe nun auf meinem Raspberry das Betriebsystem neu aufgespielt und FHEM installiert.
Dann bin ich nach "https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele" vorgegangen.

Zunächst habe MQTT2_SERVER definiert und zigbee installiert.

Nach der Installation tauchten in FHEM zwei meiner Tasmota Schalter auf und zwei weitere die ich nochzuorden muß
(müsste eigentlich eine zigbee Glühbirne sein)

Sonoff / Tasmota
defmod MQTT2_DVES_7FE298 MQTT2_DEVICE DVES_7FE298
attr MQTT2_DVES_7FE298 IODev MQTT2_FHEM_Server
attr MQTT2_DVES_7FE298 readingList DVES_7FE298:tele/Heizung/LWT:.* LWT\
DVES_7FE298:cmnd/Heizung/POWER:.* POWER\
DVES_7FE298:tele/Heizung/STATE:.* { json2nameValue($EVENT) }\
DVES_7FE298:tele/Heizung/SENSOR:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_7FE298 room MQTT2_DEVICE


alle haben folgende Zuordnung (IODev MQTT2_FHEM_Server)

Ich habe danach noch "MQTT2_zigbee_pi" definiert und die Attribute gesetzt.
defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi
attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server
attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
attr MQTT2_zigbee_pi comment To check for new updates of the deamon software, you might want to use a separate HTTPMOD device. See HTTPMOD template zigbee2mqtt_daemon_updates for further details.
attr MQTT2_zigbee_pi devicetopic zigbee2mqtt
attr MQTT2_zigbee_pi getList devicelist:noArg log $DEVICETOPIC/bridge/config/devices\
  networkmap_raw:noArg raw $DEVICETOPIC/bridge/networkmap raw\
  networkmap_graphviz:noArg graphviz $DEVICETOPIC/bridge/networkmap graphviz
attr MQTT2_zigbee_pi icon mqtt
attr MQTT2_zigbee_pi model zigbee2mqtt_bridge
attr MQTT2_zigbee_pi room MQTT2_DEVICE
attr MQTT2_zigbee_pi setList log_level:debug,info,warn,error $DEVICETOPIC/bridge/config/log_level $EVTPART1\
  permit_join:true,false $DEVICETOPIC/bridge/config/permit_join $EVTPART1\
  remove:textField $DEVICETOPIC/bridge/config/remove $EVTPART1\
  ota_update:textField $DEVICETOPIC/bridge/ota_update/update $EVTPART1\
  ota_update_check:textField $DEVICETOPIC/bridge/ota_update/check $EVTPART1\
  y_device_setting:textField $DEVICETOPIC/$EVTPART1/set {"$EVTPART2": "$EVTPART3"}\
  x_bind:textField $DEVICETOPIC/bridge/bind/$EVTPART1 $EVTPART2\
  x_bind_unbind:textField $DEVICETOPIC/bridge/unbind/$EVTPART1 $EVTPART2\
  x_device_options:textField $DEVICETOPIC/bridge/config/device_options {"friendly_name":"$EVTPART1","options": {"$EVTPART2": "$EVTPART3"}}\
  x_group_add_to:textField $DEVICETOPIC/bridge/group/$EVTPART1/add $EVTPART2\
  x_group_rm_from:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove $EVTPART2\
  x_group_rm_from_all:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove_all $EVTPART2\
  x_group_add_group:textField $DEVICETOPIC/bridge/config/add_group $EVTPART1\
  x_group_rm_group:textField $DEVICETOPIC/bridge/config/remove_group $EVTPART1\
  z_elapsed:textField $DEVICETOPIC/bridge/config/elapsed $EVTPART1\
  z_last_seen:disable,ISO_8601,epoch,ISO_8601_local $DEVICETOPIC/bridge/config/last_seen $EVTPART1\
  z_ban:textField $DEVICETOPIC/bridge/config/ban $EVTPART1\
  z_rename:textField $DEVICETOPIC/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
  z_reset_CC:noArg $DEVICETOPIC/bridge/config/reset
attr MQTT2_zigbee_pi setStateList on off


Bei State steht noch ??? und get devicelist gibt folgenden Fehler: "Timeout reading answer for zigbee2mqtt/bridge/config/devices"

Daneben ist noch "MQTT2_zigbee_bridge" in FHEM aufgetaucht.
darauf habe ich (wahrscheinlich etwas voreilig) attrtemplate zigbee_brigde angewandt....
defmod MQTT2_zigbee_bridge MQTT2_DEVICE zigbee_bridge
attr MQTT2_zigbee_bridge IODev MQTT2_FHEM_Server
attr MQTT2_zigbee_bridge bridgeRegexp zigbee2mqtt/([A-Za-z0-9._]+)[/]?.*:.* "zigbee_$1"
attr MQTT2_zigbee_bridge comment To check for new updates of the deamon software, you might want to use a separate HTTPMOD device. See HTTPMOD template zigbee2mqtt_daemon_updates for further details.
attr MQTT2_zigbee_bridge devicetopic zigbee2mqtt
attr MQTT2_zigbee_bridge getList devicelist:noArg log $DEVICETOPIC/bridge/config/devices\
  networkmap_raw:noArg raw $DEVICETOPIC/bridge/networkmap raw\
  networkmap_graphviz:noArg graphviz $DEVICETOPIC/bridge/networkmap graphviz
attr MQTT2_zigbee_bridge icon mqtt
attr MQTT2_zigbee_bridge model zigbee2mqtt_bridge
attr MQTT2_zigbee_bridge readingList $DEVICETOPIC/bridge/state:.* state\
  $DEVICETOPIC/bridge/config/devices:.* {}\
  $DEVICETOPIC/bridge/config/log_level:.* log_level\
  $DEVICETOPIC/bridge/config/permit_join:.* permit_join\
  $DEVICETOPIC/bridge/config/rename:.* { json2nameValue($EVENT, 'rename_') }\
  $DEVICETOPIC/bridge/log:.*\"type\".\"devices\".\"message\".* devices\
  $DEVICETOPIC/bridge/log:.* log\
  $DEVICETOPIC/bridge/networkmap:.* {}\
  $DEVICETOPIC/bridge/networkmap/graphviz:.* graphviz\
  $DEVICETOPIC/bridge/networkmap/raw:.* raw\
  $DEVICETOPIC/bridge/config:.* { json2nameValue($EVENT) }\
zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_bridge room MQTT2_DEVICE
attr MQTT2_zigbee_bridge setList log_level:debug,info,warn,error $DEVICETOPIC/bridge/config/log_level $EVTPART1\
  permit_join:true,false $DEVICETOPIC/bridge/config/permit_join $EVTPART1\
  remove:textField $DEVICETOPIC/bridge/config/remove $EVTPART1\
  ota_update:textField $DEVICETOPIC/bridge/ota_update/update $EVTPART1\
  ota_update_check:textField $DEVICETOPIC/bridge/ota_update/check $EVTPART1\
  y_device_setting:textField $DEVICETOPIC/$EVTPART1/set {"$EVTPART2": "$EVTPART3"}\
  x_bind:textField $DEVICETOPIC/bridge/bind/$EVTPART1 $EVTPART2\
  x_bind_unbind:textField $DEVICETOPIC/bridge/unbind/$EVTPART1 $EVTPART2\
  x_device_options:textField $DEVICETOPIC/bridge/config/device_options {"friendly_name":"$EVTPART1","options": {"$EVTPART2": "$EVTPART3"}}\
  x_group_add_to:textField $DEVICETOPIC/bridge/group/$EVTPART1/add $EVTPART2\
  x_group_rm_from:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove $EVTPART2\
  x_group_rm_from_all:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove_all $EVTPART2\
  x_group_add_group:textField $DEVICETOPIC/bridge/config/add_group $EVTPART1\
  x_group_rm_group:textField $DEVICETOPIC/bridge/config/remove_group $EVTPART1\
  z_elapsed:textField $DEVICETOPIC/bridge/config/elapsed $EVTPART1\
  z_last_seen:disable,ISO_8601,epoch,ISO_8601_local $DEVICETOPIC/bridge/config/last_seen $EVTPART1\
  z_ban:textField $DEVICETOPIC/bridge/config/ban $EVTPART1\
  z_rename:textField $DEVICETOPIC/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
  z_reset_CC:noArg $DEVICETOPIC/bridge/config/reset
attr MQTT2_zigbee_bridge setStateList on off

setstate MQTT2_zigbee_bridge 2020-12-13 22:42:15 associatedWith MQTT2_zigbee_pi
setstate MQTT2_zigbee_bridge 2020-12-13 21:42:05 attrTemplateVersion 20200701
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 message_1_dateCode 20190608
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 message_1_friendly_name Coordinator
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 message_1_ieeeAddr 0x00124b0014da2ed7
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 message_1_lastSeen 1607895792009
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 message_1_networkAddress 0
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 message_1_softwareBuildID zStack12
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 message_1_type Coordinator
setstate MQTT2_zigbee_bridge 2020-12-13 22:43:12 type devices

(state auch ???)

Den Tasmota Schalter kann ich übrigens gut schalten.
(Bei Zigbee gab es wohl ein update um die "neuen" Lidl zigbee device zu schalten)
Die Device schein wohl auf dem cc2531 stick gespeichert zu sein, alles andere habe ich platt gemacht.
(Ein pairing habe ich keines durchgeführt).

FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Beta-User

Sorry, aber nachträglich raten mag ich eigentlich nicht.

Lösche also bitte wieder diese beiden Devices (MQTT2_zigbee_pi und MQTT2_zigbee_bridge), starte zigbee2mqtt neu (Linux-Konsole) und speichere dir dann eine RAW-Definition weg von dem, was dann entsteht.

Darauf wendest du dann das "Zentraltemplate" für zigbee2mqtt an. Und dann muss man entweder warten oder ein publish für jeden Aktor ausführen, damit jeweils autocreate aktiv werden kann.

Ganz grundsätzlich: Bei den MQTT2-attrTemplate muss man nur in ganz wenigen Fällen irgendwas manuell anlegen, das ist fast immer kontraproduktiv, und es geht auch praktisch immer attrTemplate-unterstützt, wenn man mal zusätzliche Devices braucht! Und wenn das so ist, steht es "im Beipackzettel" (zu erreichen über "set ... attrTemplate ?").
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Müller

Danke.
Ich habe die beiden gelöscht. Und "save config" durchgeführt.
Dieses Device wurde neu angelegt:
defmod MQTT2_mqttjs_0d20bbd6 MQTT2_DEVICE mqttjs_0d20bbd6
attr MQTT2_mqttjs_0d20bbd6 IODev MQTT2_FHEM_Server
attr MQTT2_mqttjs_0d20bbd6 readingList mqttjs_0d20bbd6:zigbee2mqtt/bridge/state:.* state\
mqttjs_0d20bbd6:zigbee2mqtt/bridge/config:.* { json2nameValue($EVENT) }
attr MQTT2_mqttjs_0d20bbd6 room MQTT2_DEVICE

setstate MQTT2_mqttjs_0d20bbd6 online
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 commit 0514204
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 coordinator_meta_maintrel 3
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 coordinator_meta_majorrel 2
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 coordinator_meta_minorrel 6
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 coordinator_meta_product 0
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 coordinator_meta_revision 20190608
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 coordinator_meta_transportrev 2
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 coordinator_type zStack12
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 log_level info
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 network_channel 11
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 network_extendedPanID 0xdddddddddddddddd
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 network_panID 6754
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 permit_join true
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 state online
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:38:59 subscriptions zigbee2mqtt/#
setstate MQTT2_mqttjs_0d20bbd6 2020-12-13 21:32:37 version 1.16.2


Als Zentraltemplate soll ich "MQTT2_CLIENT_zentral_brigde" oder "zigbee2mqtt_bridge" verwenden?
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Beta-User

Als erstes machst du das, was zum Thema yaml im Wiki steht: ClientID festnageln!
Da steht nicht so viel, aber wenn, hat es in der Regel einen Grund >:( .

Und dann löschst du erst mal wieder alles, was mit zigbee2mqtt in FHEM zu tun hat und startest den Dienst neu.

Wenn du eine "saubere" ClientID hast, kannst du dann "zigbee2mqtt_bridge" nehmen. Steht aber auch GENAU SO (!) im Wiki...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Müller

die Client ID hatte ich eigentlich nachgeschaut ....  (Vielleicht habe ich vergessen zu speichern. ??)

Gut alles andere hat jetzt auch funktioniert.

DANKE für die Geduld & schöne Weihnachten
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung