Hallo,
besteht die Möglichkeit mittels Fhem ein Zeitsignal auf den KNX Bus zu senden? Über die ETS Software kann ich mittels einer angelegten Gruppenadresse die aktuelle Zeit senden. Wäre schön wenn man das in Fhem automatisieren könnte da meine Gira Tastsensoren nach nur 24h um einige Minuten falsch gehen. Normalerweise wird dafür wohl ein Zeitgeber (~100€) eingesetzt...
VG
Peter
Hallo Peter,
Ja.
http://fhem.de/commandref.html#EIB (http://fhem.de/commandref.html#EIB)
http://forum.fhem.de/index.php/topic,10681.msg76533.html#msg76533 (http://forum.fhem.de/index.php/topic,10681.msg76533.html#msg76533)
Antwort #5
define timedev EIB 0/0/7
attr timedev model time
attr timedev eventMap /value now:now/
attr timedev webCmd now
define datedev EIB 0/0/8
attr datedev model date
attr datedev eventMap /value now:now/
attr datedev webCmd now
# send every midnight the new date
define dateset at *00:00:00 set datedev value now
# send every hour the current time
define timeset at +*01:00:00 set timedev value now
Gruß,
Ines
Das Forum hat auch eine Suchfunktion :) http://forum.fhem.de/index.php?action=search (http://forum.fhem.de/index.php?action=search)
Hallo Ines,
vielen Dank für die schnelle Lösung meines Problems. Funktioniert super...
Ich habe vorher natürlich die Suchfunktion bemüht aber zu dem Stichwort "Zeitgeber" oder "Zeitsignal" (Begriffe aus der ETS) keine Treffer erzielt. Vielleicht hilft es ja dem Nächsten die Lösung jetzt auch unter diesen Suchbegriffen zu finden:)
Gruß
Peter
Hallo zusammen,
hoffe ich darf mich hier mal einklinken. ;-)
Ich habe das nun ebenfalls genauso implementiert, allerdings kommt auf den TS2+ nicht die korrekte Uhrzeit an. Seltsamerweise immer nur eine Uhrzeit zwischen 3 und 5.
Ist doch richtig dass 0/0/7 und 0/0/8 jeweils die Gruppenadressen im KNX für Datum und Uhrzeit sind, oder?
Zudem sendet wohl FHEM nicht den Tag mit auf den Bus, dieser fehlt dann bei der Heizungsprogrammierung im Tastsensor.
Sehe ich das richtig?
Gruss
Christian
Hallo Christian,
Bei mir funktionierte es mit einem TS3+ genau so.
Nur die Gruppenadresse für die Uhrzeit per ETS als Kommunikationsobjekt im Tastsensor eingetragen und seit dem wird die Uhrzeit von Fhem empfangen.
Wenn du das Beispiel genau so übernommen hast sendet Fhem jede Stunde die Uhrzeit auf den Bus.
# send every hour the current time
define timeset at +*01:00:00 set timedev value now
Hi,
ok dann funktioniert zumindest das Senden der Uhrzeit auf den Bus. ;-)
Allerdings zeigen die Gira TS2+ eine Uhrzeit an welche exakt 5 Stunden in der Zukunft liegt. :-(
Dass Problem mit dem fehlenden Wochentag hab ich immernoch. Ist das bei Dir gelöst?
Ist lt. Gira Doku für die die Heizungssteuerung notwendig.
Gruss
Bei mir zeigt Fhem mit den oben geposteten Einstellungen folgendes:
timedev Uhrzeit bspw. 19:04:38 und dem Button now
Wenn ich now klicke schickt Fhem bei mir auch 13 04 auf dem Bus.
Angezeigt wird aber 19:04 am Tastsensor
Mit dem Datum hab ich mich bisher nicht weiter beschäftigt
Zitat von: chrisb101 am 05 Januar 2015, 18:23:08
Dass Problem mit dem fehlenden Wochentag hab ich immernoch. Ist das bei Dir gelöst?
Ist lt. Gira Doku für die die Heizungssteuerung notwendig.
Das Problem hatte ich auch, siehe Patch: http://forum.fhem.de/index.php/topic,34611.0.html (http://forum.fhem.de/index.php/topic,34611.0.html)
Hallo,
ich bin gerade dabei mein KNX System aufzusetzen und hab ein komplett neues FHEM am laufen.
Nun wollte ich wie in der commandref aufgeführt Zeit und Datum über den Bus senden.
define timedev EIB 0/0/7
attr timedev model dpt10
attr timedev eventMap /value now:now/
attr timedev webCmd now
define datedev EIB 0/0/8
attr datedev model dpt11
attr datedev eventMap /value now:now/
attr datedev webCmd now
# send every midnight the new date
define dateset at *00:00:00 set datedev value now
# send every hour the current time
define timeset at +*01:00:00 set timedev value now
Bekomme aber im Logfile diese Meldungen.
PERL WARNING: Use of uninitialized value $FW_id in hash element at ./FHEM/01_FHEMWEB.pm line 680.
2015.11.19 13:18:47 1: PERL WARNING: Use of uninitialized value $yyyy in subtraction (-) at ./FHEM/10_EIB.pm line 678.
2015.11.19 13:18:47 1: PERL WARNING: Use of uninitialized value $mm in left bitshift (<<) at ./FHEM/10_EIB.pm line 678.
2015.11.19 13:18:47 1: PERL WARNING: Argument "now" isn't numeric in left bitshift (<<) at ./FHEM/10_EIB.pm line 678.
2015.11.19 13:18:47 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/10_EIB.pm line 862.
2015.11.19 13:18:47 1: PERL WARNING: Use of uninitialized value $FW_id in concatenation (.) or string at ./FHEM/01_FHEMWEB.pm line 745.
2015.11.19 13:20:18 1: PERL WARNING: Use of uninitialized value $mm in left bitshift (<<) at ./FHEM/10_EIB.pm line 635.
2015.11.19 13:20:18 1: PERL WARNING: Use of uninitialized value $ss in addition (+) at ./FHEM/10_EIB.pm line 635.
2015.11.19 13:20:18 1: PERL WARNING: Argument "now" isn't numeric in left bitshift (<<) at ./FHEM/10_EIB.pm line 635.
Im STATE von Datedev steht immer 31.08.2048 im reading aber das aktuelle Datum.
Im STATE von Timedev steht 00:00:00 im Reading die aktuelle Zeit.
Kann bitte jemand helfen?
Viele Grüße
Henrik
Abend!
Au weh - mir deucht, ich muss die Doku mal aufräumen.
Geht ganz easy - bitte nicht DPT10/11 verwenden, sondern date/time. Empfangene Telegramme werden ignoriert, gesendete enthalten immer die aktuelle Systemzeit.
Siehe Doku:
◦time -> receiving has no effect, sending any value contains actual system time
◦date -> receiving has no effect, sending any value contains actual system date
Was bei u.g. Skript klemmt - weiß nicht genau. Sieht nach einem Formatierungsproblem aus.
Grüße, Andi
Hallo,
manchmal ist die Antwort so einfach. einfach mal die Augen auf machen und das Hirn anschalten. Sorry hätte ich auch sehen können wenn ich mir mal alle Elemente unter Model richtig angeschaut hätte. Ich verspreche Besserung. ;-)
Vielen Dank für die Hilfe.
Henrik
Hallo Henrik,
ja, und wenn in der Doku kein Müll stände wärs noch einfacher :-P
Gut, wenn es funktioniert!
Schönen Abend!
Servus!
so, habe nochmal geprüft.
So, wie es in der commandref drin steht, funktioniert es sogar. Dein Fehler waren "nur" die Datentypen...
Grüße, Andi
Hallo!
und wie funktioniert das nun nach der KNX Umstellung.
mit dpt10 und dpt11 gehts leider nicht.
define datedev KNX 1/1/1:dpt11
attr datedev IODev EIB
attr datedev eventMap /value now:now/
attr datedev webCmd now
define timedev KNX 1/1/0:dpt10
attr timedev IODev EIB
attr timedev eventMap /value now:now/
attr timedev webCmd now
bringt leider nicht das passende Ergebnis wie zuvor mit EIB
Abend!
Müsste eigentlich funktionieren. Was passiert denn genau? Was sagt das verbose-5-log?
Grüße, Andi
Hi Andi!
Schaut so aus als ob das encoding nicht funktioniert:
2016.06.03 06:17:05.646 5: enter set KNXtime: hash: HASH(0x174f290), attributes: KNXtime, value, now
2016.06.03 06:17:05.646 5: set KNXtime: model: dpt10, GAD: 10/0/9, GAD hex: a009 , gno: 1
2016.06.03 06:17:05.647 5: check value: now, gno: 1
2016.06.03 06:17:05.648 5: check value: now, gno: 1, model: dpt10, pattern: (?^: ((2[0-4]|[0?1][0-9]):(60|[0?1-5]?[0-9]):(60|[0?1-5]?[0-9]))|([nN][oO][wW]))
2016.06.03 06:17:05.648 5: encode value: now, gno: 1
2016.06.03 06:17:05.649 5: encode model: dpt10, code: dpt10, value: now
2016.06.03 06:17:05.649 5: encode normalized value: now
2016.06.03 06:17:05.650 5: encode model: dpt10, code: dpt10, value: 166:17:5, numval: 21369093, hexval: 001461105
Ich hab so getestet:
ETS-GA_Monitor -> FHEM: funktioniert ok, richtige Werte!
FHEM -> GA-Monitor: (mit set KNXTIME now) : brint obigen log, FHEM terminiert ohne weiteren log-eintrag, es kommt nix am GA-Monitor an.
PS: mit EIB-Definition (model time) funktionierts in beide Richtungen einwandfrei!
l.g. & danke erwin
Hallo,
mein verbose-5 log sagt folgendes:
Zitat2016.06.03 04:00:00 5: exec at command timeset
2016.06.03 04:00:00 5: Cmd: >set timedev value now<
2016.06.03 04:00:00 5: enter set timedev: hash: HASH(0x1bee230), attributes: timedev, value, value, now
2016.06.03 04:00:00 5: set timedev: model: dpt10, GAD: 1/1/0, GAD hex: 1100, gno: 1
2016.06.03 04:00:00 5: check value: value, gno: 1
2016.06.03 04:00:00 3: timeset: invalid value: value
2016.06.03 04:00:00 5: redefine at command timeset as *04:00:00 set timedev value now
2016.06.03 04:05:00 5: exec at command dateset
2016.06.03 04:05:00 5: Cmd: >set datedev value now<
2016.06.03 04:05:00 5: enter set datedev: hash: HASH(0x1bee1d0), attributes: datedev, value, value, now
2016.06.03 04:05:00 5: set datedev: model: dpt11, GAD: 1/1/1, GAD hex: 1101, gno: 1
2016.06.03 04:05:00 5: check value: value, gno: 1
2016.06.03 04:05:00 3: dateset: invalid value: value
2016.06.03 04:05:00 5: redefine at command dateset as *04:05:00 set datedev value now
der aus folgenden Quellcode resultiert
define timedev KNX 1/1/0:dpt10
attr timedev IODev EIB
attr timedev eventMap /value now:now/
attr timedev webCmd now
define datedev KNX 1/1/1:dpt11
attr datedev IODev EIB
attr datedev eventMap /value now:now/
attr datedev webCmd now
define dateset at *04:05:00 set datedev value now
define timeset at *04:00:00 set timedev value now
das komische ist, wenn ich das senden des Wertes manuell auslöse (auf "now" clicke) und schaue was in der ETS mitgelesen wird kommt das richtige Datum, aber immer als Wochentag Samstag.
Hi Andi,
Problem gefunden: die zeile 1079 soll so lauten:
# $numval = $secs + ($mins<<8) + (($hoffset + $hours)<<16);
$numval = $secs + ($mins<<8) + ($hours<<16);
...derzeit wird der Tag 2* addiert....
l.g. erwin
Servus!
Ich schau mal drauf - hoffe, ich schaffe es am Sonntag...
Grüße, Andi
Was mache ich hier falsch?
2016.06.04 11:48:39 5: exec at command timeset
2016.06.04 11:48:39 5: Cmd: >set timedev value now<
2016.06.04 11:48:39 5: enter set timedev: hash: HASH(0x34241e0), attributes: timedev, value, value, now
2016.06.04 11:48:39 5: set timedev: model: dpt10, GAD: 0/0/7, GAD hex: 0007, gno: 1
2016.06.04 11:48:39 5: check value: value, gno: 1
2016.06.04 11:48:39 3: timeset: invalid value: value
Definition sieht so aus (laut Commendref)
Zitat### KNX ###
define tul TUL eibd:localhost 1.1.255
attr tul room System
attr tul useEIB 1
define timedev KNX 0/0/7:dpt10
attr timedev IODev tul
attr timedev eventMap /value now:now/
attr timedev webCmd now
define datedev KNX 0/0/8:dpt1
attr datedev IODev tul
attr datedev eventMap /value now:now/
attr datedev webCmd now
# send every midnight the new date
#define dateset at *00:00:00 set datedev value now
# send every hour the current time
#define timeset at +*01:00:00 set timedev value now
Mit Fixwert klappt es:
2016.06.04 11:43:55 5: Cmd: >set timedev value 12:13:14<
2016.06.04 11:43:55 5: enter set timedev: hash: HASH(0x34241e0), attributes: timedev, value, 12:13:14
2016.06.04 11:43:55 5: set timedev: model: dpt10, GAD: 0/0/7, GAD hex: 0007, gno: 1
2016.06.04 11:43:55 5: check value: 12:13:14, gno: 1
2016.06.04 11:43:55 5: check value: 12:13:14, gno: 1, model: dpt10, pattern: (?^:((2[0-4]|[0?1][0-9]):(60|[0?1-5]?[0-9]):(60|[0?1-5]?[0-9]))|([nN][oO][wW]))
2016.06.04 11:43:55 5: encode value: 12:13:14, gno: 1
2016.06.04 11:43:55 5: encode model: dpt10, code: dpt10, value: 12:13:14
2016.06.04 11:43:55 5: encode normalized value: 12:13:14
2016.06.04 11:43:55 5: encode model: dpt10, code: dpt10, value: 12:13:14, numval: 789774, hexval: 000c0d0e
2016.06.04 11:43:55 5: sending Cw0007000c0d0e
2016.06.04 11:43:55 5: encode_eibd dst: 0007 apci: 2 datalen: 4 data: 0 12 13 14
2016.06.04 11:43:55 5: SendGroup: dst: 0007, msg: 7 0 128 12 13 14
2016.06.04 11:43:55 5: sendRequest: 0027000700800c0d0e
2016.06.04 11:43:55 5: set timedev: cmd: value, value: 12:13:14, translated: 000c0d0e
2016.06.04 11:43:55 5: decode value: 000c0d0e, gno: 1
2016.06.04 11:43:55 5: decode model: dpt10, code: dpt10, value: 000c0d0e
2016.06.04 11:43:55 5: decode model: dpt10, code: dpt10, value: 000c0d0e, numval: 789774, state: 12:13:14
Wenn ich webCmd drücke, hängt sich FHEM kpl. auf. Dann muss ich auf mein RestartScript warten. Im Log sieht man keinen Fehler, nur den Neustart (12:00 - 12:05)
2016.06.04 12:00:44 4: WEB_192.168.178.58_58341 GET /fhem?detail=timedev&cmd.timedev=set%20timedev%20now; BUFLEN:0
2016.06.04 12:00:44 5: Cmd: >set timedev now<
2016.06.04 12:00:44 5: enter set timedev: hash: HASH(0x34241e0), attributes: timedev, value, now
2016.06.04 12:00:44 5: set timedev: model: dpt10, GAD: 0/0/7, GAD hex: 0007, gno: 1
2016.06.04 12:00:44 5: check value: now, gno: 1
2016.06.04 12:00:44 5: check value: now, gno: 1, model: dpt10, pattern: (?^:((2[0-4]|[0?1][0-9]):(60|[0?1-5]?[0-9]):(60|[0?1-5]?[0-9]))|([nN][oO][wW]))
2016.06.04 12:00:44 5: encode value: now, gno: 1
2016.06.04 12:00:44 5: encode model: dpt10, code: dpt10, value: now
2016.06.04 12:00:44 5: encode normalized value: now
2016.06.04 12:00:44 5: encode model: dpt10, code: dpt10, value: 204:0:44, numval: 25952300, hexval: 0018c002c
2016.06.04 12:00:44 5: sending Cw00070018c002c
2016.06.04 12:05:05 5: Initializing Type Library:
2016.06.04 12:05:05 1: Including /opt/fhem/fhem.cfg
value: 204:0:44 anstatt
12:00:44 wird die Ursache sein ...
Übrigens, beim datedev gibt es keine Probleme
ich gehe jetzt mal davon aus, dass das ein Fehler im 10_KNX ist und hoffe auf einen baldigen Fix.
Oder steht das in der KNX Spec (habe ich nicht gelesen), dass in die Uhrzeit der Wochentag als Offset eingeht? Oder ist das eher ein copy&paste Fehler?
#add offsets
$year+=1900;
$mon++;
# calculate offset for weekday
$wday = 7 if ($wday eq "0");
$hoffset = 32*$wday;
$hours += $hoffset;
Geprüft, geändert und nochmal geprüft.
Wird die nächsten 15min eingechecked.
Und ja: den Offset brauchts wegen der Unix-Time. Aber halt nur einmal - und keine zwei mal :-)
Grüße, Andi
Danke fürs Anpassen, jetzt hängt sich FHEM nicht mehr auf.
Aber ich bekomme noch das bei diesem Befehl im FHEMWEB
set timedev value now
Ergebnis:
Zitatinvalid value: value
Und damit funktioniert das Beispiel aus dem Commandref nicht:
Zitat
# send every midnight the new date
define dateset at *00:00:00 set datedev value now
# send every hour the current time
define timeset at +*01:00:00 set timedev value now
Muss das nicht so heißen? So geht es ...
define timeset at +*01:00:00 set timedev now
Korrekt. Danke!
Hatte ich neulich aber bereits in der comandref angepasst. Kriegst Du das noch nicht angezeigt?
Hallo Andi,
kannst du bitte die genannte Änderung (Wegfall von value) in der Commandref einpflegen? Das hilft sich noch dem einen oder anderen weiter.
Ich sehe unter http://fhem.de/commandref.html#KNX (http://fhem.de/commandref.html#KNX) immer noch die Eib-Version. Danke.
Grüße
Falki
Jup. Kommt in die nächste Version. Warum auch immer ich das noch nicht gemacht habe...
...erledigt und eingechecked...
Hey Andi,
zur Info: das "attr timedev eventMap /value now:now/" fehlt noch in der Commandref... hab mich gerade gewundert, wieso der Befehlt nicht funktioniert hat...
lg, LichtiMC
Hallo, ich hänge mich hier mich mal an.
Mit meiner fhem.cfg schreibt er statt des Datums die Werte mittels Zeit Formatierung...
efine timedev KNX 6/1/1:dpt10
attr timedev IODev KNX
attr timedev eventMap /value now:now/
attr timedev webCmd now
define datedev KNX 6/1/2:dpt11
attr datedev IODev KNX
attr datedev eventMap /value now:now/
attr datedev webCmd now
# send every midnight the new date
define dateset at *00:00:00 set datedev now
# send every hour the current time
define timeset at +*01:00:00 set timedev now
In der ETS kommt dann sowas wie im Bild.
...und wie schauts in FHEM aus?
Hey,
Die Internals:
DEF 6/1/2:dpt11
DEVNAME datedev
IODev KNX
KNX_MSGCNT 2
KNX_RAWMSG C01102w06102160611
KNX_TIME 2017-06-22 12:16:17
LASTInputDev KNX
MSGCNT 2
NAME datedev
NR 49
NTFY_ORDER 50-datedev
STATE 22.06.2017
TYPE KNX
Die Readings:
getG1 22.06.2017 2017-06-22 12:16:17
last-sender 1/1/2 2017-06-22 12:16:17
setG1 22.06.2017 2017-06-22 13:07:20
state 22.06.2017 2017-06-22 13:07:20
Attributes:
IODev KNX
eventMap /value now:now/
webCmd now
Ich seh grad das Problem nicht?
In meinem ersten Post ist ein Bild vom Problem.
Das Datum wird als Zeit formatiert.
Wo denn? In der ETS?
Dann stell im Gruppenmonitor in der Dropdownliste von Uhrzeit auf Datum. Nachdem beides 3-Byte-Werte sind, kann die ETS das nicht automatisch erkennen. Muss man ihr sagen...
Also nur ein Darstellungsproblem? Super, vielen Dank.
Hallo, in der commandref steht immer noch
# send every hour the current time
define timeset at +*01:00:00 set timedev value now
damit hat es bei mir nicht funktioniert. erst mit dem Hinweis aus diesem thread:
define timeset at +*01:00:00 set timedev now
wird die Zeit auch stündlich verschickt.
Commandref Beispiel sollte korrigiert werden.
Sorry, aber das kann nicht sein.
set myDevice now
Wird unweigerlich in einem Fehler enden. Es sei denn, Du hast per webCmd ein Alias angelegt...
Ich habe genau das Beispiel aus der commandref benutzt
The current date and time can be sent to the bus by the following settings:
define timedev EIB 0/0/7
attr timedev model time
attr timedev eventMap /value now:now/
attr timedev webCmd now
...
# send every hour the current time
define timeset at +*01:00:00 set timedev value now
so sieht es bei mir aus:
define KNX TUL knxd:192.168.178.29 0.0.1
attr KNX useEIB 0
define timedev KNX 0/0/3:dpt10
attr timedev IODev KNX
attr timedev eventMap /value now:now/
attr timedev webCmd now
# send every hour the current time
define timeset at +*01:00:00 set timedev now
Wenn ich
set timedev value now
eingebe, bekomme ich eine Fehlermeldung:
Zitat
invalid value: value
das hingegen geht:
set timedev now
Komisch. Habe es nachgestellt. Entzieht sich meiner Konrolle.
Lösche das Attribut "EventMap" und alles ist gut. Scheinbar hat die Weboberfläche ein Problem mit dem gleichlautenden Befehl...
Ich werde das Beispiel in der Commandref bei Gelegenheit anpassen.
Grüße, Andi