Autor Thema: dpt19 zeigt bei Set Fehler im eigenen State.  (Gelesen 445 mal)

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1473
dpt19 zeigt bei Set Fehler im eigenen State.
« am: 01 Oktober 2018, 13:26:25 »
Wenn ich mit diesem Device

defmod knxZeit 0/0/252:dpt19:datetime:nosuffix
setstate knxZeit 2018-10-01 13:11:03 datetime 10.06.1900_01:45:11
ein
set knxZeit datetime now absetze,
erscheint im eigenen Reading folgender Wert:

inform on knxZeit
set knxZeit datetime now
fhem> KNX knxZeit  datetime: 10.06.1900_01:45:11

Die Uhrzeit stimmt, die Jahreszahl jedoch nicht.

Die ETS zeigt folgende Meldung an:
5808,"01.10.2018Â 13:11:02,637",15.15.255,-,0/0/252,DatumZeit,GroupValueWrite,19.* Datum/Zeit,"76 0A 01 2D 0B 03 00 00 | Montag, 01.10.2018, 13:11:03 (---------) = (Fault: Normal (no fault), Working Day: Bank Holiday (No working day), No WD: WD field valid, No Year: Year field valid, No Date: Month and Day of Month fields valid, No Day of Week: Day of week field valid, No Time: Hour of day, Minutes and Seconds field valid, Standard Summer Time: Time = UT+X, Qualitiy of clock: clock without ext. sync signal)"
Die Uhrzeit scheint also am KNX-Bus korrekt anzukommen, jedoch falsch im Modul "decodert" zu werden.

Das Verbose5 dazu sieht so aus:
2018.10.01 13:11:03 5: enter set knxZeit: hash: HASH(0x55b3d0ff4200), attributes: knxZeit, datetime, now
2018.10.01 13:11:03 5: set knxZeit: desired target is gad datetime, command: now, args:
2018.10.01 13:11:03 5: check value: now, gadName: datetime
2018.10.01 13:11:03 5: check value: now, gadName: datetime, model: dpt19, pattern: (?^i:(((3[01]|[0-2]?[0-9]).(1[0-2]|0?[0-9]).(19[0-9][0-9]|2[01][0-9][0-9]))_((2[0-4]|[0?1][0-9]):(60|[0?1-5]?[0-9]):(60|[0?1-5]?[0-9])))|(now))
2018.10.01 13:11:03 5: encode value: now, gadName: datetime
2018.10.01 13:11:03 5: encode model: dpt19, code: dpt19, value: now
2018.10.01 13:11:03 5: encode Datetime 1, 10, 118, 13, 11, 3
2018.10.01 13:11:03 5: encode model: dpt19, code: dpt19, value: now, numval: 0, hexval: 00760a012d0b030000
2018.10.01 13:11:03 5: set knxZeit: cmd: now, value: now, translated: 00760a012d0b030000
2018.10.01 13:11:03 5: decode value: 00760a012d0b030000, gadName: datetime
2018.10.01 13:11:03 5: decode model: dpt19, code: dpt19, value: 00760a012d0b030000
2018.10.01 13:11:03 5: decode Datetime 10, 6, 1900, 1, 45, 11
2018.10.01 13:11:03 5: decode model: dpt19, code: dpt19, value: 00760a012d0b030000, numval: 00760a012d0b030000, state: 10.06.1900_01:45:11

sG
Joe
« Letzte Änderung: 02 Oktober 2018, 07:42:59 von JoeALLb »
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1473
Antw:dpt19 zeigt Fehler im eigenen State.
« Antwort #1 am: 01 Oktober 2018, 14:34:33 »
Nachtrag:
Wenn ich aber genau diesen Wert
$76 $0A $01 $2D $0B $03 $00 $00  oder 118 010 001 045 011 003 000 000 als Dezimalper ETS auf FHEM schicke, wird das Reading korrekt aktualisiert!
Der Fehler sollte also innerhalb des Moduls passieren irgendwo zwischen dem senden des Wertes und dem Aktualisieren des Readings..
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1473
Antw:dpt19 zeigt bei Set Fehler im eigenen State.
« Antwort #2 am: 08 Oktober 2018, 15:32:23 »
Danke für das Update. Der "senden" Weg geht nun, jedoch das Empfangen nicht mehr.

Wenn ich per ETS "$76 $0A $08 $2F $1B $38 $00 $00" an FHEM schicke,

wird daraus das hier
5: parse: process message, device-name: knx.time, rd-name: datetime, gadCode: 000fc, model: dpt19
 5: decode value: 760a082f1b380000, gadName: datetime
 5: decode model: dpt19, code: dpt19, value: 760a082f1b380000
 5: decode model: dpt19, code: dpt19, value: 760a082f1b380000, numval: 760a082f1b380000, state: 47.08.1910_27:56:00
 5: received hash (wpi): HASH(0x556af2a8bd28) name: knx.time, STATE: 47.08.1910_27:56:00, READING: datetime, SENDER: 011ff
,

anstatt
08.10.2018 15:30:39.


sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline Andi291

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1104
Antw:dpt19 zeigt bei Set Fehler im eigenen State.
« Antwort #3 am: 08 Oktober 2018, 21:03:06 »
Abend!

Kriege ich bei mir nicht nachgestellt...in meinem Setup kommen DPT19 die von der ETS gesendet werden nicht oder nicht sauber über den KNXD drüber.
Mag ggf. an dem langen Telegramm liegen i.V.m. Multicast liegen - nen DPT mit 64 Bit kenne ich sonst nicht.

Davon abgesehen:
Decodiert wird richtig - bitte rechne nach...

76 --> 2018
0a --> Oktober
08 ..> 08.
2f --> 47 Stunden
1b --> 27 Minuten
38 --> 56 Sekunden

08.10.2018 15:30:39 entspricht 760A080F1E270000...


Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1473
Antw:dpt19 zeigt bei Set Fehler im eigenen State.
« Antwort #4 am: 10 Oktober 2018, 12:32:08 »
Servus:
Wenn ich im Modul die Logzeile (Log3 ...) ergänze:

  elsif ($code eq "dpt19")
        {
                $numval = $value;
                my $time = hex (substr ($numval, 8, 6));
                my $date = hex (substr ($numval, 2, 6));
                my $secs  = ($time & 0x3F) >> 0;
                my $mins  = ($time & 0x3F00) >> 8;
                my $hours = ($time & 0x1F0000) >> 16;
                #my $day   = ($date & 0x1F) >> 0;
                #my $month = ($date & 0x0F00) >> 8;
                #my $year  = ($date & 0xFFFF0000) >> 16;
                my $day   = ($date & 0xFF) >> 0;
                my $month = ($date & 0xFF00) >> 8;
                my $year  = ($date & 0xFF0000) >> 16;

                $year += 1900;
         Log3 ($name, 5, "decode date: $day, $month, $year, $hours, $mins, $secs");
                $state = sprintf("%02d.%02d.%04d_%02d:%02d:%02d", $day, $month, $year, $hours, $mins, $secs);
        }

Decodiert das Modul das Datum falsch. Es dekodiert eindeutig auf 1910. Encoden dagegen funktioniert korrekt.

Siehe das Verbose 5 Log.
11:44:53 5: parse: process message, device-name: knx.time, rd-name: datetime, gadCode: 000fc, model: dpt19
11:44:53 5: decode value: 760a082f1b380000, gadName: datetime
11:44:53 5: decode model: dpt19, code: dpt19, value: 760a082f1b380000
11:44:53 5: decode date: 47, 8, 1910, 27, 56, 0
11:44:53 5: decode model: dpt19, code: dpt19, value: 760a082f1b380000, numval: 760a082f1b380000, state: 47.08.1910_27:56:00

Leider kenne ich mich mit dieser Hex-Codierung zuwenig aus...

sG
joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline Andi291

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1104
Antw:dpt19 zeigt bei Set Fehler im eigenen State.
« Antwort #5 am: 11 Oktober 2018, 19:52:27 »
Welchen Wert möchtest Du denn senden?

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1473
Antw:dpt19 zeigt bei Set Fehler im eigenen State.
« Antwort #6 am: 11 Oktober 2018, 19:58:58 »
760A080F1E270000, also Zeile 3 im Log oben stimmt noch, erst Zeile 4 zeigt den Fehler.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270