Datum/Uhrzeit nach KNX synchronisieren/senden

Ich habe das Skript mal für Version 4.2+ angepasst :slight_smile:

paresy

Jetzt Funktioniert es.
Vielen Dank!

Hallo Zusammen,
ohne es ausprobiert zu haben: Ist dieses Skript denn auch funktionsfähig für ETS 5?
Liebe Grüße Dennis.

Hallo Dennis,

meinst du die kommende Symcon-Version 5?
Mit der ETS-Version hat es nichts zu tun. Die KNX-Datentypen werden standardisiert und ändern sich dann nicht mehr, unabhängig von der ETS-Version.

Viele Grüße
Volker

Hallo zusammen,

ich habe mich mal daran versucht die Zeit-Synchronisierung für die neuen DPT-Instanzen ans Laufen zu kriegen. Für die Uhrzeit mit dem DPT 10.001 war das auch relativ einfach:

KNX_WriteDPT10($_IPS['TARGET'], date('N'), time());

Mit dem Datum komme ich allerdings nicht so richtig zum Ziel, der folgende Code-Schnipsel funktioniert leider nur zum Teil:

KNX_WriteDPT11($_IPS['TARGET'], time());

Und zwar wird hier intern anscheinend noch die übergebene Zeit von der Funktion KNX_WriteDPT11 modifiziert, zumindest steht am Ende ein anderer Zeitstempel in der Variable Date. Leider ist es aber auch so, dass der Tag aktuell erst um 1:00 Uhr nachts wechselt, zwischen Mitternacht und 1:00 Uhr früh wird noch der vorige Tag zurückgeliefert. Zeitzone auf dem Raspberry ist richtig eingestellt, Symcon wurde auch mehrmals neu gestartet um Probleme mit der Umstellung auf Winterzeit etc ausschließen zu können.

Hat sich schon jemand am DPT 19.001 versucht? Ich vermute hier kommt man um externe Abfragen nicht umher, gerade was die Bankarbeitstage angeht…

Bernd

Erstmal Danke für den Skript.

Bei mir kommt beim Ausführen dieser Fehler:

Warning: Eigenschaft 20/1/1 nicht gefunden in C:\ProgramData\Symcon\scripts\37331.ips.php on line 31

Warning: Eigenschaft 20/1/2 nicht gefunden in C:\ProgramData\Symcon\scripts\37331.ips.php on line 32

Warning: Eigenschaft 20/1/3 nicht gefunden in C:\ProgramData\Symcon\scripts\37331.ips.php on line 33

Was läuft hier schief?

Symcon Version ist 5.4

Hast du es nur kopiert und die GA oben angepasst? Es wirkt, als wenn du ggf. noch mehr verändert hättest?

paresy

Guten Abend zusammen,

leider bin ich mit dem codieren von Skripten nicht sehr bewandert.
Ist es möglich, dass man dieses Skript noch so erweitert, dass es den Status Tag bzw. Nach aus der Kern Instanz Location ausliest und als boolean Wert auf den KNX Bus in eine GA schreibt?
Wenn ja, wäre es nett wenn mir jemand auf die Sprüge hilft oder vielleicht die (vermutlich) wenigen Zeilen Code verrät.
Das Skript so funktioniert auf jeden Fall schon super - Danke an alle, die sich da eingebracht haben.

Gute Nacht Speed

Zeig doch mal, was Du bisher probiert hast und wo es klemmt. Dann wissen wir, wo wir ansetzen müssen.

Wert auslesen, auf den Bus schicken und Ereignis auf Änderung von Tag/Nacht.

Hallo,

Danke für die Antwort aber ich habe noch nichts probiert.
Ich habe das Skript aus diesem Thread im Einsatz und schreibe damit im 15 Minuten Rhythmus Datum und Uhrzeit in jeweils eine GA auf den KNX Bus.
Jetzt hätte ich gerne noch die Information Es ist Tag bzw. Es ist Nacht auf die nächste GA geschrieben.
Meine Vorstellung wäre, dass man diese Info aus IPS nimmt und mit diesem Skript eben überträgt.

Wenn ich ganz falsch liege und man benötigt dazu ein neues Skript - auch gut.

Also mein Ansatz wäre, den Wert true oder false aus Location auslesen und dann als DPT 001.2 auf, in meinem Fall, GA 4/2/0 schreiben.
Dieses Skript dann alle 15 laufen lassen und somit wissen dann alle Geräte am KNX Bus, sofern sie es verstehen und verknüpft sind mit GA 4/2/0, ob es Tag oder Nacht ist.

Ich hoffe, ich konnte mein Ansinnen nun verständlich erklären.

Danke im Voraus für jeden Input
Speed

Dein Ansatz ist richtig und Du kannst dafür auch das gleiche Skript verwenden.

Woran scheitert es nun? An GetValue? Oder was genau hindert Dich jetzt am weitermachen?

Danke für Deine Hilfe - da ich vom Skripten wie geschrieben wenig bis keine Ahnung habe, habe ich das Problem nun anders gelöst.

Ich habe eine neu Instanz KNX DPT 001.x erstellt.
Diese so konfiguriert:

Dann ein auslösendes Ereignis erstellt und so kinfiguriert:

In ETS5 kann ich nun im Diagnosemodus sofort sehen (wenn ich am Symcon PC händisch die Zeit ändere), wie der Tag/Nacht Wert geschrieben wird.

Wie gesagt, vielleicht nicht die Profilösung mit Skript aber schnell zusammengeklickt und es tut was ich wollte.

Leider konntest Du mir nicht helfen aber mit ein wenig lesen und überlegen habe ich ja nun eine Lösung.

Schöne Grüße
Speed

Das ist die Hauptsache.

Es gibt in diesem Fall keine richtige, falsche oder Profilösung. So wie Du es gemacht hast, ist es vollkommen in Ordnung.

Ein Skript hätte in etwa so ausgesehen:

$TagNacht = GetValue(12345);
KNX_WriteDPT1(45678, $TagNacht);

Dabei ist 12345 die ID der Tag/Nacht Variablen und 45678 die ID der KNX Instanz vom Typ DPT1, auf welche der Wert gesendet werden soll. Auf das Skript ein Ereignis, welches bei Änderung von 12345 das Skript auslöst.

Grüße,
Christoph

Danke für das Script aus dem ersten Post. Läuft.
Ist es möglich dem Script für DPT 10 auch den Tag mit zu geben?

Viele Grüße
Papaschlumpf

Ja, geht.

Normalerweise würde hier stehen: Zeig doch mal, was Du bisher schon probiert hast und dann schauen wir mal, wo wir ansetzen können.

Versuch mal:

KNX_WriteDPT10(12345, idate("w"), time());

Müsste funktionieren, bin mir aber unsicher.

moin,

habe das Script ohne Probleme seit Jahren am laufen, nun ist mit einem der letzten Updates (nicht sicher welches es war, PHP > 7.4?) irgendetwas passier das ich diese Fehlermeldung (Warnung) bekomme, und die Logs vollgeschrieben werden:

Notice: Trying to access array offset on value of type int in /var/lib/symcon/scripts/54270.ips.php on line 38

line 38 ist diese:

if(($IGA['GA1'] != $GA[0]) || ($IGA['GA2'] != $GA[1]) || ($IGA['GA3'] != $GA[2])){

}

…hat jemand eine Ahnung was geändert werden muss um die Warnung nicht mehr zubekommen?

Danke

Im ersten Beitrag sollte ein aktuelles Skript sein. Geändert hat sich (ich glaube zur 5.3), dass GA1 nun GroupAddress1 usw. heißt.

paresy

In diversen Threads wird der Befehl RequestAction bevorzugt und von den alten Befehlen EIB_Date etc. abgeraten.
In dem Script wird aber mit den „alten“ gearbeitet. Hat das ein bestimmten Grund?
Meine Frage hat ein Grund :o ich versuche eine KNX DPT 10 (Zeit) und 11 (Datum) mit einem einfachen Befehl KNX_Write… oder RequestAction… zu setzen, leider ohne Erfolg:(
Mit den alten Befehlen EIB_Date und EIB_Time war das kein Problem.

Ich stelle sie im KNX/EIB Bereich.

Ein Beitrag wurde in ein neues Thema verschoben: KNX: Wie DTP 19.001 senden?