Virtuelle Geräte

Hi,

ich habe im Homegear einen Fensterkontakt von Homematic manuel angelegt. Dieser wird nun auch von meinem Homee erkannt.
Wie kann ich den Zustand nun über die API setzen? Der STATE ist ja read-only.

Gruß,
Timo

Hallo @timo,

hier hast du eine XML-Datei für einen virtuellen Fensterkontakt:

VirtualWindowContact.xml (1018 Bytes)

Platziere diese in /etc/homegear/devices/254 und lade das Miscellaneous-Modul anschließend neu:

homegear -e mrl mod_miscellaneous.so

(Ein Homegear-Neustart tut es natürlich auch)

Jetzt kannst du den Fensterkontakt anlegen:

homegear -r
fs 254
pc F000 VIRTUALWIN

Das wars.

Viele Grüße

Sathya

1 Like

Hallo zusammen,

Ich hänge mich mal hier an:
Ich habe im Bad ein Homematic Heizkörperthermostat (HM-CC-RT-DN) sowie einen Lacrosse-Sensor TX-29TH. Das Ganze steuere ich mit der Kombo OpenHAB2 und Homegear. Dabei verwende ich das Jeelink-Binding von OpenHAB, um die Sensorwerte des TX-29TH auszulesen.

Ich würde gerne den Sensor als externe Temperaturquelle mit dem Thermostat peeren. Das Peering soll als direkte Geräteverknüpfung angelegt werden.

Dazu habe ich versucht, das XML des HM-WDS40-TH-I-2 in die Familie 254 zu kopieren. Dabei habe ich nur DeviceID und Description verändert, sowie in den Parametern von Temperature und Humidity “writeable” auf “true” gesetzt, damit ich diese später von OpenHAB aus füttern kann. In Homegear habe ich dann per “pc F001 0000000001” ein virtual device angelegt. Dieses erscheint dann auch unmittelbar in der Inbox von OpenHab. Dort kann ich dann ein entsprechendes Thing angelegen. Leider hat dieses keinen Kanal um die Sensorwerte als Items anzulegen. Wenn ich ein Original-HM-WDS40-TH-I-2 aus Familie 0 anlege (Device Type BC), kann ich die Items hingegen anlegen.

Was mache ich falsch oder bin ich gar ganz auf dem Holzweg?

Viele Grüße,
Roland

Hallo @HortusNanum,

Ich würde gerne den Sensor als externe Temperaturquelle mit dem Thermostat peeren. Das Peering soll als direkte Geräteverknüpfung angelegt werden.

Das ist leider ein bisschen komplizierter und es muss dazu ein virtuelles Gerät in der HomeMatic-Familie im C+±Quelltext angelegt werden. Das Problem ist, dass das virtuelle Gerät in der Miscellaneous-Familie keine BidCoS-Pakete senden kann. Wenn du einen EnOcean-Stellantrieb nimmst, geht das Ganze :stuck_out_tongue:. Diese lassen sich über Node-BLUE auch richtig regeln (und funktionieren damit besser als der HM-CC-RT-DN). Nachteil ist natürlich ganz klar der hohe Preis.
Ich muss mal sehen, ob ich die Funktion irgendwann einbaue. Aktuell bin ich aber so eingespannt, dass ich es nicht in absehbarer Zeit schaffe.

Viele Grüße

Sathya

Hallo @sathya,

vielen Dank für Deine Antwort.
Gibt es eine Möglichkeit ohne eine direkte Verknüpfung das “artfremde” Thermometer als Referenz für die Temperaturregelung zu nehmen?

Viele Grüße,
Roland

Hallo @HortusNanum,

Der einzige Ansatz ist hier: HM-CC-RT-DN und VALVE_STATE setzen. Damit müsste es eigentlich folgendermaßen funktionieren. Ganz, ganz, ganz wichtig: Vorher “BURST_RX” auf Kanal 0 (https://ref.homegear.eu/device.html?directory=HomeMatic+BidCoS&file=rf_cc_rt_dn.xml&familyLink=homematicbidcos&name=HM-CC-RT-DN#affixSubsubsection0_0_5) deaktivieren, sonst ist die Batterie vom Stellantrieb sofort leer:

homegear -e rc '$hg->putParamset([Peer ID des Stellantriebes], 0, array("BURST_RX" => false));'

Jetzt kannst du Folgendes machen:

  • Stelle die maximale Solltemperatur ein:

    homegear -e rc '$hg->setValue([Peer ID des Stellantriebes], 4, "MANU_MODE", 30.5);'

  • Ziehe ein Heizungsreglerelement (heating-controller) in Node-BLUE (https://[Pi-IP]:2002/flows, Nutzer und Kennwort standardmäßig homegear) in einen Flow und stelle diesen auf “Radiator”.

  • Ziehe zwei variable-in-Knoten davor. Setze den ersten auf die virtuelle Variable des TX-29TH. Den zweiten auf eine Variable, welche die gewünschte Solltemperatur enthält. Verbinde beide Knoten mit den entsprechenden Eingängen am Heizungsregler.

  • Ziehe einen function-Knoten hinter den Heizungsregler, verbinde den Ausgang des Heizungsreglers mit diesem und füge Folgendes in den Funktionsknoten ein ("[Peer ID]" durch die ID des Stellantriebes ersetzen):

    $hg->putParamset([Peer ID des Stellantriebes], 0, array("VALVE_MAXIMUM_POSITION" => $message['payload']));

Das wars. Hier der Dummy-Flow, welchen du über das Menü in Node-BLUE einfügen kannst:

[{"id":"395bf883.99459","type":"tab","namespace":"tab","label":"Flow 1","disabled":false,"info":""},{"id":"189797ab.e87f98","type":"variable-in","namespace":"variable","z":"395bf883.99459","variabletype":"device","peerid":"0","channel":"0","variable":"","variabletext":"","refractoryperiod":"200","outputonstartup":false,"loopprevention":false,"looppreventiongroup":"4a09f7fb.c09be","name":"Isttemperatur","x":145,"y":140,"wires":[[{"id":"996628e7.9bfe38","port":0}]]},{"id":"9df73f04.4632a8","type":"variable-in","namespace":"variable","z":"395bf883.99459","variabletype":"device","peerid":"0","channel":"0","variable":"","variabletext":"","refractoryperiod":"200","outputonstartup":false,"loopprevention":false,"looppreventiongroup":"4a09f7fb.c09be","name":"Solltemperatur","x":145,"y":190,"wires":[[{"id":"996628e7.9bfe38","port":1}]]},{"id":"996628e7.9bfe38","type":"heating-controller","namespace":"heating","z":"395bf883.99459","name":"","heatingtype":"radiator","kp":"50","tn":"7200","td":"600","rcwlp":"60","ylprc":"60","uvalvelprc":"60","x":335,"y":170,"wires":[[{"id":"537f66ef.19456","port":0}]]},{"id":"537f66ef.19456","type":"function","namespace":"function","z":"395bf883.99459","name":"","func":"$hg->putParamset([Peer ID des Stellantriebes], 0, array(\"VALVE_MAXIMUM_POSITION\" => $message['payload']));","inputs":1,"outputs":1,"noerr":1,"x":510,"y":170,"wires":[[]]},{"id":"4a09f7fb.c09be","type":"variable-loop-prevention-group","namespace":"variable","z":"","uniqueid":"Rundlicht","refractoryperiod":"1000"}]

Viele Grüße

Sathya

2 Likes