Ersetzen der alten Befehle EIB_xxx

In diversen Threads wird der Befehl RequestAction bevorzugt und von den alten Befehlen EIB_Date etc. abgeraten.

Ich baue deshalb gerade auf XML und die neuen Befehle um. Mir ist nur nicht ganz klar wie ich mit RequestAction und KNX_WRITEDPTx… umgehe. In vielen Threads wird man auf RequestAction eingeschworen.
Ich versuche z.B. gerade das IPS-Datum und die Uhrzeit auf den KNX zu bringen, was vorher mit den OPC-Typen und EIB_DATE und EIB_TIME funktioniert hat, bekomme ich mit den XML-Typen und KNX_WRITE und RequestAction nicht hin.

Benutze noch IPS 5.4.

Moin,

ich persönlich halte von RequestAction nichts und nutze daher die KNX_WriteDPT Befehle. Gerade bei Solchen Dingen wie Datum wüsste ich gar nicht, wie ich das mit RequestAction anstellen sollte. Habe es aber auch nicht probiert, da es mit KNX_WriteDPT wunderbar funktioniert.

Du schreibst leider nicht, was Du schon probiert hast und was nicht funktioniert.
Kurzform: Leg Dir eine DPT11 Instanz für das Datum und eine DPT10 Instanz für die Zeit an.

KNX_WriteDPT11(12345, time());
KNX_WriteDPT10(12345, date('w'), time());

Fertig.
Bei DPT19 wird es dann etwas komplizierter :slight_smile:

Du willst RequestAction auf die Variable anwenden. Und dort wiederum schauen, was für ein Profil dahinter liegt. Wahrscheinlich haben wir es auf UnixTimestamp umgerechnet, sodass du genau diese auch senden musst. (So wie es DerStandart auch geschrieben hat)

paresy

Ich habe die neuen XML-Typen angelegt.

Ein Script (Datum) erstellt und ausgeführt. Ohne Fehlermeldung aber mit dem Datum 31.12.1989 :mad:

KNX_WriteDPT11(22596, date("Ymd"));

Ein Script (Uhrzeit) erstellt und ausgeführt. Mit Fehlermeldungen :mad:

KNX_WriteDPT10(57094, time("His"));

Warning: time() expects exactly 0 parameters, 1 given in C:\ProgramData\Symcon\scripts\34306.ips.php on line 3
Warning: Wrong parameter count for KNX_WriteDPT10() in C:\ProgramData\Symcon\scripts\34306.ips.php on line 3

Ich bin jetzt etwas irritiert. Oben stehen doch fertige Befehle :slight_smile:

paresy

Sorry ihr beiden, ich ging von einem Verschreiber aus, da DPT11 im Kontext time und DPT10 im Kontext date stand und habe sie umgeschrieben:banghead:
Alles so gemacht und jetzt läuft es … Danke ihr beiden.

Ich mach es so…



<?php

RequestAction(21347, time());
RequestAction(17018, time());


Das alle 30 Minuten getriggert - läuft :slight_smile:

Ich hatte das ausnahmsweise getestet :wink: