Uhrzeit mittels Fhem auf den KNX-Bus senden ? (Zeitgeber)

Begonnen von Peter-FL, 15 September 2014, 21:43:26

Vorheriges Thema - Nächstes Thema

erwin

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
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Alveole

#16
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.

erwin

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
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Andi291

Servus!

Ich schau mal drauf - hoffe, ich schaffe es am Sonntag...

Grüße, Andi

setstate

#19
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

setstate

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;

Andi291

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

setstate

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

Andi291


Andi291

Hatte ich neulich aber bereits in der comandref angepasst. Kriegst Du das noch nicht angezeigt?

Falki

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 immer noch die Eib-Version. Danke.

Grüße
Falki
KNX + Cubietruck + FHEM

Andi291

Jup. Kommt in die nächste Version. Warum auch immer ich das noch nicht gemacht habe...

Andi291


lichtimc

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

Syon

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.