Frage zum KNX DP 19* (Datum/Zeit)

Hallo zusammen,

ich habe eine Frage zum oben genannten Datenpunkt. Ich habe im KNX keine Möglichkeit um Zeit und Datum zu Erzeugen. Ich sende vom IPS-Server das Datum und die Zeit auf den Bus als EIS 3 und das Funktioniert soweit. Nun haben meine neue Taster von MDT aber für das Datum und den Wochentag einen 8bytes Datenpunkt mit 19.001,wie kann ich jetzt aus IPS raus diesen Datenpunkt auf den Bus senden?

Du kannst den DPT erstellen und per RequestAction auf die Variablen die „Zeit“ aktualisieren.

paresy


So sieht der DP aus. Also nur an die entsprechende Variable senden? Oder?

Wenn ich in der neuen Konsole diesen DP öffne, habe ich einige Einstellungsmöglichkeiten. Wofür sind die denn?

Ich vermute mal das das hier funktioniert :

RequestAction (32008, time());

Guten morgen, danke für die Hilfe, so geht es. Jetzt ist mir aufgefallen das in dem neu angelegten Datenpunkt der Wochentag falsch ist (dort wird schon Sonntag angezeigt :eek:). Ich habe von Andreas dass Skript am laufen und dort wird die Zeit und das Datum erzeugt.

Von dort habe ich ein Ereignis (DateLong) auf den neuen DP und dort kommt der falsche Wochentag.

Was kann das sein?

Dankeschön…

Hallo,

kann hier jemand was zu sagen? Warum hier der falsche Tag Angezeigt wird? :confused::confused:

Hast du mal geschaut was in der Wochentag Variable steht? Welcher Wochentag ist da?

paresy

Im Bild 1(#5) ist der Richtige Wochentag und den schreibe ich auf den 19er DP und dort wird Sonntag Angezeigt.

Guten Morgen,
ich bin jetzt einfach mal so dreist und hole diesen alten Thread nochmal hoch. Das Problem mit dem Wochentag besteht nämlich weiterhin. Wenn ich den Wert auf der KNX-Seite setze, dann ist (seit diesem Fix) alles korrekt. Macht man allerdings in Symcon eine RequestAction darauf, dann ist der Tag immer +1.

DP19-1

Ich bin gerade zufällig über diesen Thread gestoßen, weil ich heute eine neue DPT19-Instanz eingerichtet habe.

@paresy Da scheint wirklich noch ein Bug in der Standardaktion der Zeit-Variablen zu stecken. Aktualisiert man die Zeit über die Statusvariable mit RequestAction(), dann ist der Wochentag, wie von @netti93 bereits beschrieben, um einen Tag zu weit vor. Ich vermute, dass ihr hier intern mit der Standardrepräsentation des Wochentags (0 = Montag … 6 = Sonntag) arbeitet.
DPT19 arbeitet aber mit ISO 8601 (1 = Montag, 7 = Sonntag). 0 ist ein Sonderfall und entspricht irgendeinem Tag.

Ich nutze statt der Standardaktion KNX_WriteDPT19(). Darüber geben ich den Wochentag und auch alle anderen Flags korrekt vor.

Gruß
Slummi

Hallo Slummi,

kannst du mir das bitte genauer erklären. Für mich ist das noch alles Neuland. Ich bräuchte für mein Logikmodul einen 8Bytes Datum/Uhrzeit GA.

Vielen Dank
mfg
wing

Was genau möchtest du denn wissen? Wie sich der Bug äußert? Das habe ich ja erklärt, wobei ich hier nur mutmaßen kann, da ich nicht weiß, was IPS intern macht.

Wie ich es generell an den KNX übergeben kann. Datum und Uhrzeit getrennt habe ich über das PHP Skript gelöst und funktioniert einwandfrei

Ich muss morgen mal nachsehen, wie ich das mache. Sitze gerade nicht am Rechner.

Im Prinzip brauchst du nur die DPT19-Instanz erstellen und dann die Statusvariablen via RequestAction auf die aktuelle Zeit setzen. Aber dann kommt wie gesagt der Bug bzgl. Wochentag zum Tragen. Daher habe ich den Wochentag manuell korrigiert und alles per KNX_WriteDPT19() gesendet. Aber ich weiß die Syntax gerade nicht auswendig. Der Befehl hat sehr viele Parameter, eben für alle Werte, die DPT19 beinhaltet.

Also, wenn RequestAction bei der Instanz fehlerfrei funktionieren würde, würde folgendes ausreichen, um Datum/Uhrzeit auf den Bus zu senden (korrekte Konfiguration der Instanz vorausgesetzt):

RequestAction(12345, time());

Wobei 12345 durch die ID der Statusvariablen mit der Zeit ersetzt werden muss.

Wenn du den Wochentag nicht benötigst (dieser ist aufgrund des Bugs falsch), kannst du das so verwenden. Brauchst du ebenfalls den korrekten Wochentag, musst du bis zur Korrektur (@paresy Habt ihr das auf dem Schirm?) anderweitig helfen.

Ich habe es so gelöst:

$currentTime = time();
$isWorkingDay = ! GetValueBoolean(55555);
KNX_WriteDPT19(56789, $currentTime, date('N', $currentTime), false, $isWorkingDay, false, false, false, false, false, date('I', $currentTime), true);

56789 Muss hier durch die ID der Instanz ersetzt werden.
55555 Ist eine Variable, die bei mir angibt, ob heute ein Feiertag ist (true) oder nicht (false).

Die Ermittlung der Feiertage musst du dir bei Bedarf selbst zusammenbauen, sofern nicht schon vorhanden.
Oder du setzt es fest auf irgendeinen Wert und setzt dann den Folgeparameter auf true, um auf dem Bus zu signalisieren, dass der Wochentag ungültig ist. Auch hier ist die Frage, ob du das brauchst.

Gruß
Slummi

Hab ich übersehen. Ist zur 6.3 gefixt.

paresy

1 „Gefällt mir“

Vielen Dank, Ich habe nun versucht die Instanz zu konfigurieren. Wie kann ich Uhrzeit, Datum etc den Variablen zuweisen?

Vielen Dank

Habe ich doch beschrieben. Hast du das mal ausprobiert?
Skript entweder mit RequestAction() oder mit KNX_WriteDPT19 erstellen und ausführen. Da brauchst du den Variablen nichts mehr zuweisen.

Ich habe meine GA 0/3/4 hier eingetragen.

Aber ich glaube, dass meine Config nicht (ganz) richtig ist

Kurzerer OT Hinweis in Sachen Forum:
Bilder und Anhänge einfach in das Textfeld ziehen oder über die Zwischenablage einfügen.
Diese Bilderdienste braucht kein Mensch.
Michael

1 „Gefällt mir“