FHEM Forum

FHEM - Hausautomations-Systeme => KNX/EIB => Thema gestartet von: mani am 22 April 2017, 23:05:05

Titel: Datum/Uhrzeit aus KNX als Systemzeit setzen
Beitrag von: mani am 22 April 2017, 23:05:05
Hallo,
möchte die Zeit aus dem KNX holen und als Systemzeit setzen, ist das möglich? Werden DPT10/DPT11 in fhem aktualisiert oder ist es nur möglich die Systemzeit ans KNX zu senden?
Danke MfG Mani
Titel: Antw:Datum/Uhrzeit aus KNX als Systemzeit setzen
Beitrag von: smurfix am 23 April 2017, 10:57:46
Dumm gefragt: wieso willst du das? dein Rechner hat mit NTP eine viel bessere Zeitbasis als du sie über KNX bekommen könntest.
Titel: Antw:Datum/Uhrzeit aus KNX als Systemzeit setzen
Beitrag von: Andi291 am 23 April 2017, 12:24:51
Kann ich aber nachvollziehen. Ich hab ne KNX-Wetterstation und speise die Zeit auch nach FHEM.
Sinn und Unsinn der einigen Sekunden Unschärfe dahingestellt :-)

So geht's:

sudo nano /etc/sudoers

paste:
Cmnd_Alias DATE=/bin/date
fhem ALL=(root) NOPASSWD: DATE

Test (fhem.cfg)
define test dummy
define Notify_test1 notify test:geht {system ("sudo date -s 09:00")}
define Notify_test2 notify test:nicht {system ("sudo reboot")}


Grüße, Andi
Titel: Antw:Datum/Uhrzeit aus KNX als Systemzeit setzen
Beitrag von: mani am 23 April 2017, 14:32:32
Hallo und Danke für die Infos...

ich möchte eine Visu fürs KNX ohne Internetanbindung realisieren daher möchte ich die Zeit aus dem KNX.....
Da ich zurzeit noch keine Anbindung zu KNX kann ich meine versuche noch nicht testen. :-\


....sehe ich das richtig das wenn KNX die Gruppenaddressen für Datum/Uhrzeit neu befühlt ich ein State in diesem Format datedev 23.04.2017   timedev 13:08:10 bekomme?

Dann würde es so versuchen:

define datedev KNX 1/1/1:dpt11
define timedev KNX 1/1/0:dpt10


define at_Time at +*00:59:00 { fhem("set Time ".(Value("datedev")." ".Value("timedev"))) } ;;;; {system("/opt/fhem/log/Time.sh");;;;}

define Time dummy
attr Time event-on-change-reading .*

define Timelog FileLog ./log/Time.log Time


im Skript steht das

#!/bin/bash


jahr=$(tail -n -1 /opt/fhem/log/Time.log | cut -d " " -f3 | cut -d "." -f3)
monat=$(tail -n -1 /opt/fhem/log/Time.log | cut -d " " -f3 | cut -d "." -f2)
tag=$(tail -n -1 /opt/fhem/log/Time.log | cut -d " " -f3 | cut -d "." -f1)
time=$(tail -n -1 /opt/fhem/log/Time.log | cut -d " " -f4)
sudo date -s "$jahr-$monat-$tag $time"


der Code funktioniert soweit aber wird das  Timedev automatisch mit der KNX-Zeit synchronisiert?


MFG Mani

Titel: Antw:Datum/Uhrzeit aus KNX als Systemzeit setzen
Beitrag von: enrikb am 23 April 2017, 17:01:35
Ich möchte noch zu bedenken geben, dass (zumindest unixoide) Betriebssysteme und darauf laufende Anwendungen nicht so gerne "Zeitsprünge" sehen. Daher versucht man üblicherweise "Zeit stellen" auf den Bootvorgang zu beschränken. Während des  Normalbetriebs möchte man mit Driftkorrektur auskommen. -> ntp

Evtl. kann man aus den KNX Zeitdaten ja eine Echtzeitquelle für ntpd basteln? Ist aber bestimmt nicht trivial.