ich versuche gerade bei meinem Projekt die RTC des stm32 mit der Uhrzeit der CCU zu synchronisieren.
Nun dachte ich das ich ein neues HB-Device erstelle, das auf dem ersten Kanal den eigentlich Zweck ausführt und auf meinem neuen zweiten Kanal die Synchronisation. Die neue Geräteklasse wird über eine leicht modifizierte Version des HB-TM-JP AddOn reduced mit dem RaspberryMatic bekannt gemacht.
Die Definition des Channel sieht so aus
Code: Alles auswählen
<frame id="TIMEDATA_SET" direction="to_device" type="0x11" subtype="0x02" subtype_index="9" channel_field="10">
<parameter type="integer" index="11.0" size="4.0" param="TIME" />
</frame>
<..../>
<channel index="2" type="TIMESYNC">
<link_roles>
<target name="SWITCH"/>
<target name="WEATHER_CS"/>
<target name="WCS_TIPTRONIC_SENSOR"/>
</link_roles>
<paramset type="MASTER" id="timesync_ch_master">
<parameter id="AES_ACTIVE" ui_flags="internal">
<logical type="boolean" default="false" />
<physical type="boolean" interface="internal" value_id="AES" />
</parameter>
<parameter id="TIME_CONFIG">
<logical type="integer" unit="s" />
<physical type="integer" interface="config" list="0" index="28" size="4.0" />
</parameter>
</paramset>
<paramset type="VALUES" id="timesync_ch_values">
<parameter id="ENABLE" operations="event" control="TIMESYNC.ENABLE">
<logical type="integer" />
<physical type="integer" interface="command" value_id="ENABLE_VALUE">
<event frame="TIMESYNC_EVENT" />
</physical>
</parameter>
<parameter id="STATE" operations="read,write,event" control="SWITCH.STATE">
<logical type="boolean" default="false" />
<physical type="integer" interface="command" value_id="STATE">
<set request="LEVEL_SET" />
<event frame="TIMESYNC_EVENT" />
</physical>
<conversion type="boolean_integer" threshold="1" false="0" true="200"/>
</parameter>
<parameter id="TIME" operations="read,write" control="NONE">
<logical type="integer" unit="s"/>
<physical type="integer" interface="store" id="TIME" volatile="true">
<set request="TIMEDATA_SET" />
<get request="TIMEDATA_GET" />
</physical>
</parameter>
</paramset>
</channel>
Code: Alles auswählen
time tt = system.Date();
dom.GetObject('BidCos-RF.509BT00001:2.TIME').State(tt.ToTime().ToInteger());
Code: Alles auswählen
Aug 10 13:20:02 homematic-raspi local0.info ReGaHss: Info: interface name= BidCos-RF for ID=1007 [GetInterfaceByID():iseXmlRpc.cpp:2552]
Aug 10 13:20:02 homematic-raspi local0.info ReGaHss: Info: XMLRPC 'setValue': rpcClient.execute() succeeded (url: xmlrpc_bin://127.0.0.1:32001, params: {"509BT00001:2","TIME",23}, result: "") [CallXmlrpcMethod():iseXmlRpc.cpp:2613]
Aug 10 13:20:02 homematic-raspi local0.info ReGaHss: Info: interface name= BidCos-RF for ID=1007 [GetInterfaceByID():iseXmlRpc.cpp:2552]
Aug 10 13:20:02 homematic-raspi local0.info ReGaHss: Info: XMLRPC 'getValue': rpcClient.execute() succeeded (url: xmlrpc_bin://127.0.0.1:32001, params: {"509BT00001:2","TIME"}, result: 23) [CallXmlrpcMethod():iseXmlRpc.cpp:2613]
Mit freundlichen Grüßen
Dix