RTC mit Raspberrymatic/CCU synchronisieren

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

ichdenkenicht
Beiträge: 3
Registriert: 09.08.2020, 19:23
System: Alternative CCU (auf Basis OCCU)

RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von ichdenkenicht » 10.08.2020, 13:29

Moin,

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>
Der Parameter "TIME" ist der um den es geht, ich dachte nun das ich mit einem Skript, was bei einem Event vom Kanal 1 ausgeführt wird, die Zeit in Sekunden von 1970, an mein Gerät übertragen könne.

Code: Alles auswählen

time tt = system.Date();
dom.GetObject('BidCos-RF.509BT00001:2.TIME').State(tt.ToTime().ToInteger());
Der XMLRPC führt das wohl auch aus nur wird der neue State nicht über Funk übertragen

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]
Jetzt weiß ich nicht ob ich einfach einen Denkfehler habe und nur bestimmte Kanaltypen existieren und zum Beispiel die zwei Zustände eines Schalters übertragen werden können, oder wo sonst mein Fehler liegen könnte.

Mit freundlichen Grüßen
Dix

jp112sdl
Beiträge: 6199
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 286 Mal
Danksagung erhalten: 579 Mal
Kontaktdaten:

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von jp112sdl » 10.08.2020, 14:39

Hi,
im Detail überblicke ich es grad noch nicht.
Aber nach dem was ich hier sehe, kannst du TIME nicht einzeln setzen, sondern nur im kompletten Frame (ENABLE, STATE und TIME) mit angeben.

Einfaches Beispiel ist ON_TIME in rf_s.xml
Man kann den Aktor schalten "STATE" oder schalten mit Einschaltdauer "STATE"+"ON_TIME".
"ON_TIME" einzeln setzen geht nicht.
Hängt vermutlich mit volatile="true" zusammen? Damit hab ich mich noch nie befasst

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

jp112sdl
Beiträge: 6199
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 286 Mal
Danksagung erhalten: 579 Mal
Kontaktdaten:

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von jp112sdl » 10.08.2020, 15:04

Btw:
Die CCU führt zyklisch den Befehl /bin/SetInterfaceClock aus.
Damit wird die Uhrzeit auf HM Geräte mit Uhrzeit/Wochenprogrammen übertragen.
Aber auch damit hab ich mich nie weiter befasst :lol:

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

TomMajor
Beiträge: 1127
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 76 Mal
Danksagung erhalten: 201 Mal
Kontaktdaten:

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von TomMajor » 10.08.2020, 16:15

Man könnte auch auf TIME verzichten und den 32bit Wert in einem eigenen custom value in der payload von 4 Byte übertragen, wenn man sowieso ein eigenens xml macht, oder?
Viele Grüße,
Tom

jp112sdl
Beiträge: 6199
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 286 Mal
Danksagung erhalten: 579 Mal
Kontaktdaten:

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von jp112sdl » 10.08.2020, 16:24

TomMajor hat geschrieben:
10.08.2020, 16:15
in einem eigenen custom value in der payload von 4 Byte übertragen
Reden wir vom selben?
Er möchte von der CCU zum Gerät schicken

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

TomMajor
Beiträge: 1127
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 76 Mal
Danksagung erhalten: 201 Mal
Kontaktdaten:

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von TomMajor » 10.08.2020, 16:52

da hast du Recht ich hatte die andere Richtung im Sinn. :roll:
Vlt. ähnlich 4,2 ePaper? Da gehen doch custom Daten von der CCU zum Gerät?
Viele Grüße,
Tom

jp112sdl
Beiträge: 6199
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 286 Mal
Danksagung erhalten: 579 Mal
Kontaktdaten:

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von jp112sdl » 10.08.2020, 17:50

Sein Ansatz ist schon nicht verkehrt. Aber volatile macht den Parameter m.W. nur im Kontext benutzbar.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

ichdenkenicht
Beiträge: 3
Registriert: 09.08.2020, 19:23
System: Alternative CCU (auf Basis OCCU)

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von ichdenkenicht » 10.08.2020, 18:29

Moin,

ja genau ich möchte quasi 4 Byte von der CCU an das Gerät senden
schon mal viele Dank für das Feedback, das volatile="true" kann ich ja einfach entfernen, ist wohl ein überbleibsel aus try&error-Versuchen meinerseits.
Dann schau ich mir wenn es ein bisschen kühler ist das 4,2 ePaper xml und das rf_s.xml mal an und schaue ob ich das damit zusammenbekomme.

mfg Dix

jp112sdl
Beiträge: 6199
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 286 Mal
Danksagung erhalten: 579 Mal
Kontaktdaten:

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von jp112sdl » 10.08.2020, 19:50

Ich würde den Weg des - aus meiner Sicht - geringsten Widerstands gehen und einen dedizierten Kanal nur für die TIME nehmen.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

papa
Beiträge: 494
Registriert: 22.05.2018, 10:23
Danksagung erhalten: 46 Mal

Re: RTC mit Raspberrymatic/CCU synchronisieren

Beitrag von papa » 10.08.2020, 22:13

Es gibt eine extra Message

Code: Alles auswählen

	#define AS_MESSAGE_TIMESTAMP                          0x3F					// signed answer needed on request
Diese wird aber derzeit von der AskSin++ nicht beachtet. Vielleicht ist das ja die Nachricht, welche die CCU versendet, mit der aktuellen Zeit.
Anfragen zur AskSin++ werden nur im Forum beantwortet

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“