Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeit vom ntp-Binding auf den knx-Bus

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zeit vom ntp-Binding auf den knx-Bus

    Hallo,

    ich hab auf das knx2-Binding umgestellt und das meiste funktioniert auch. Leider ein paar Dinge nicht. Eins der ärgerlichsten ist die Zeit. Bisher hab ich die Zeit der ntp-Binding geholt und auf den KNX-Bus geschrieben.

    Dafür hatte ich unter knx1 ein Item angelegt, dass Zeit und Datum auf den Bus schreibt, jeweils mit dem richtigen DPT:

    Code:
    DateTime    Datum        "Datum [%1$tA, %1$td.%1$tm.%1$tY]"        <calendar>    (Status)        { channel="ntp:ntp:dortmund:dateTime", knx="11.001:3/0/1", knx="10.001:3/0/0" }
    Unter knx2 gibt es ja jetzt den datetime-Typ, der aber einen andere DTP, nämlich 19.001 nutzt, nicht 10.001 für die Zeit und 11.001 für das Datum. DTP 19.001 kennen aber meine Geräte nicht. Damit kann ich die Zeit nicht mehr auf den Bus schreiben.

    Auch wenn ich zwei einzelne Items wie folgt in der .things-Datei angebe:

    Code:
    Type datetime  : Datum           "Datum"                                   [ ga="11.001:3/0/0" ]
    Type datetime  : Zeit            "Zeit"                                    [ ga="10.001:3/0/1" ]
    und dann per Item verknüpfe:

    Code:
    DateTime Datum             "Datum [%1$tA, %1$td.%1$tm.%1$tY]"  <calendar>  (Status) { channel="ntp:ntp:dortmund:dateTime", channel="knx:device:bridge:generic:Datum", channel="knx:device:bridge:generic:Zeit" }
    klappt das nicht. Datum und Zeit (vor allem Zeit ist mir wichtig, Datum ist eigentlich egal) werden nicht auf den Bus geschrieben.

    Hat jemand von Euch eine Idee, was ich falsch mache?

    Gruß,
    Daniel

    #2
    Du musst den Zeit/Datum channel als control Channel einrichten:
    Code:
    Type datetime-control : Datum "Datum" [ ga="11.001:3/0/0" ]
    Type datetime-control : Zeit "Zeit" [ ga="10.001:3/0/1" ]
    Schließlich gibt es keine Uhr am Bus, die die Zeit liefert, sondern nur Geräte, die die Zeit empfangen.

    Kommentar


      #3
      Danke, genau das wars.

      Gruß,
      Daniel

      Kommentar


        #4
        Hallo an diesem sonnigen Sonntag ;-)

        ich habe gerade folgendes Problem und bin auf diesen Beitrag gestolpert:

        Meine Raumcontroller zeigen nach einiger Zeit immer die "verkehrte" Uhrzeit an, das heißt sie gehen nach.

        Nun wollte ich den von udo1toni aufgeführten Code als Rule verwenden.

        Testweise so, dass immer, wenn ich ein Fenster öffne, das Datum und die Zeit gesendet werden. das Ntp-plugin funktioniert m. E. zumindest zeigt es mir auf dem sitemap alles korrekt an.

        Mein Code wäre momentan folgender:

        rule "Test"
        when
        Item Fenster_Nord_EG_Buero changed
        then
        sendTelegram("bot1", "openHAB Test ...")

        Type datetime-control : Datum "Datum" [ ga="11.001:8/0/0" ]
        Type datetime-control : Zeit "Zeit" [ ga="10.001:8/0/1" ]


        end

        Sorry für die Anfängerfrage, aber ich versuche mich halt jetzt langsam an den "rules".

        Kommentar


          #5
          Das ist kein Code für die Rule Engine

          Wenn Du noch auf knx1 bist, sieht das Ganze als Item so aus:

          Code:
          DateTime Zeit "Zeit und Datum [%s]" {knx="10.001:8/0/1",knx="11.001:8/0/0",channel="ntp:ntp:local:dateTime"}
          Falls Du knx2 verwendest, erstellst Du ein thing (es bietet sich an, das nicht für ein echtes Device einzutragen, sondern ein virtuelles Device anzulegen):
          Code:
          Bridge knx:serial:bridge [
               serialPort="/dev/ttyAMA0",
               readingPause=50,
               responseTimeout=10,
               readRetriesLimit=3,
               autoReconnectPeriod=1
          ] {
              Thing device virtuell {
                  Type datetime-control : Datum "Datum" [ ga="11.001:8/0/0" ]
                  Type datetime-control : Zeit "Zeit" [ ga="10.001:8/0/1" ]
          }
          Die Bridge habe ich hier nur der Vollständigkeit halber angegeben!
          Die passenden Items:
          Code:
          DateTime Zeit "Zeit und Datum [%s]" {channel="knx:device:bridge:virtuell:Zeit",channel="ntp:ntp:local:dateTime"}
          DateTime Datum "Datum [%s]" {channel="knx:device:bridge:virtuell:Datum",channel="ntp:ntp:local:dateTime"}
          Eine Rule ist hierfür nicht notwendig.
          Du könntest natürlich bei einer Änderung eines Items, welches nur mit dem dateTime Channel des ntp Bindings verlinkt ist, dessen Wert per Rule in das Item kopieren, welches nur mit dem Channel des knx2 Bindings verbunden ist, aber wer will denn sowas?

          Kommentar


            #6
            Hallo udo1toni,

            vielen Dank für den Code. Ich verende knx1. Also hab ich demzufolge die Codezeile in meine item- datei kopiert. Ist das richtig?

            Aber was ich jetzt nicht verstehe. Wann sendet es dann die Zeit und das Datum auf den Bus? Ich brauche ja irgend einen Befehl oder? Deshalb hab ich gedacht eine rule. Weitergedacht - jede Nacht um drei, sende das Datum und den Uhrzeit auf den Bus... So wie bei den Funkuhren.

            -- Hab grad nachgeschaut. Das Datum schreibt er ca. alle fünf Minuten auf den Bus. Aber die Uhrzeit nicht?
            Zuletzt geändert von Markus784; 12.08.2018, 19:00.

            Kommentar


              #7
              Nein, das Item wird regelmäßig durch das ntp Binding aktualisiert, die Frequenz dafür wird natürlich innerhalb des ntp Bindings festgelegt. Jedesmal, wenn das Item aktualisiert wird, reicht es diese Aktualisierung dann in Richtung knx weiter.

              Ich hoffe mal, Du hast auch ntp als Binding eingerichtet

              Kommentar


                #8
                Denke schon. Also in der sitemap wird mir Datum und Uhrzeit richtig angezeigt.

                Ich habe für das ntp binding folgende dateien erzeugt:

                ntp.things

                ntp:ntp:local [ hostname="0.pool.ntp.org", refreshInterval=60, refreshNtp=30 ,locale="", timeZone="Europe/Berlin"]

                und

                ntp.items

                DateTime CurrentDate "Datum [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]" <calendar> { channel="ntp:ntp:local:dateTime" }

                Der log zeigt auch folgendes:

                2018-08-12 21:07:06.243 [vent.ItemStateChangedEvent] - Current_DateTime changed from 2018-08-12T21:06:06.271+0200 to 2018-08-12T21:07:06.272+0200 2018-08-12 21:07:06.245 [vent.ItemStateChangedEvent] - CurrentDate changed from 2018-08-12T21:06:06.271+0200 to 2018-08-12T21:07:06.272+0200

                2018-08-12 21:07:06.246 [vent.ItemStateChangedEvent] - Zeit changed from 2018-08-12T21:06:06.271+0200 to 2018-08-12T21:07:06.272+0200

                Wie gesagt, das Datum geht ja. Ich habs halt genauso gemacht, wie in der offiziellen Dokumentation
                Zuletzt geändert von Markus784; 12.08.2018, 20:14.

                Kommentar


                  #9
                  Wunderbar, dann musst Du nur noch den passenden knx-Channel mit dem DateTime Item verbinden. Für knx1 also

                  Code:
                  DateTime CurrentDate "Datum [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]" <calendar> { knx="10.001:8/0/1",knx="11.001:8/0/0",channel="ntp:ntp:local:dateTime" }
                  Alternativ kannst Du auch die Reihenfolge der Bindings tauschen, oder auch erst mal nur eine der beiden GA koppeln.

                  Kommentar


                    #10
                    Vielen Dank jetzt hab ich es verstanden.

                    Es funktioniert super

                    Kommentar


                      #11
                      Hallo,

                      habe bei meinem Upgrade auf OH 2.3 und KNX2-Binding versucht, nach der Vorlage aus der Diskussion die Zeit zyklisch auf den KNX-Bus zu schicken. Auf den ersten Blick hat es auch funktioniert, leider scheint das Senden der Zeit zu einer Endlosschleife zu führen, so dass der Bus mit den Zeit-Messages überschwemmt wird.

                      So sieht das in der ETS aus:
                      Bild1.png

                      So sieht meine Konfiguration dazu aus:
                      ntp.things:
                      Code:
                      ntp:ntp:germany [ hostname="pool.ntp.org", refreshInterval=60, refreshNtp=24 ]

                      knx.things:
                      Code:
                      Type datetime-control : knx_date "Datum auf KNX-Bus" [ ga="11.001:5/1/1" ]
                      Type datetime-control : knx_time "Uhrzeit auf KNX-Bus" [ ga="10.001:5/1/2" ]

                      knx.items:
                      Code:
                      DateTime KNX_CurrentDate "Datum [%s]" {channel="knx:device:ipinterface:central:knx_date",channel="ntp:ntp:germany:dateTime"}
                      DateTime KNX_CurrentTime "Uhrzeit [%s]" {channel="knx:device:ipinterface:central:knx_time",channel="ntp:ntp:germany:dateTime"}

                      Das events.log zeigt für jedes Update folgende Einträge an, anscheinend liegt das Problem bei "KNX_CurrentDate" und "KNX_CurrentTime", sieht so aus, als würden sie vom Bus aus verändert werden, möglicherweise weil die Datenformate (18.001 bzw 11.001 / 10.001) nicht zusammen passen?
                      Code:
                      2018-09-01 14:00:40.972 [ome.event.ItemCommandEvent] - Item 'KNX_CurrentTime' received command 1970-01-03T14:00:04.000+0100
                      2018-09-01 14:00:40.979 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 2018-09-01T14:00:34.961+0200 to 1970-01-03T14:00:04.000+0100
                      2018-09-01 14:00:40.994 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 1970-01-03T14:00:04.000+0100 to 2018-09-01T14:00:40.982+0200
                      2018-09-01 14:00:40.996 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-01T14:00:34.961+0200 to 2018-09-01T14:00:40.982+0200
                      2018-09-01 14:00:47.011 [ome.event.ItemCommandEvent] - Item 'KNX_CurrentTime' received command 1970-01-03T14:00:04.000+0100
                      2018-09-01 14:00:47.019 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 2018-09-01T14:00:40.982+0200 to 1970-01-03T14:00:04.000+0100
                      2018-09-01 14:00:47.039 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 1970-01-03T14:00:04.000+0100 to 2018-09-01T14:00:47.021+0200
                      2018-09-01 14:00:47.041 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-01T14:00:40.982+0200 to 2018-09-01T14:00:47.021+0200
                      2018-09-01 14:00:53.059 [ome.event.ItemCommandEvent] - Item 'KNX_CurrentDate' received command 2018-09-01T00:00:00.000+0200
                      2018-09-01 14:00:53.066 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-01T14:00:47.021+0200 to 2018-09-01T00:00:00.000+0200
                      2018-09-01 14:00:53.082 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 2018-09-01T14:00:47.021+0200 to 2018-09-01T14:00:53.070+0200
                      2018-09-01 14:00:53.086 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-01T00:00:00.000+0200 to 2018-09-01T14:00:53.070+0200
                      2018-09-01 14:00:59.094 [ome.event.ItemCommandEvent] - Item 'KNX_CurrentDate' received command 2018-09-01T00:00:00.000+0200
                      2018-09-01 14:00:59.103 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-01T14:00:53.070+0200 to 2018-09-01T00:00:00.000+0200
                      2018-09-01 14:00:59.116 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 2018-09-01T14:00:53.070+0200 to 2018-09-01T14:00:59.104+0200
                      2018-09-01 14:00:59.119 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-01T00:00:00.000+0200 to 2018-09-01T14:00:59.104+0200
                      2018-09-01 14:01:02.318 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 2018-09-01T14:00:59.104+0200 to 2018-09-01T14:01:02.306+0200
                      2018-09-01 14:01:02.324 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-01T14:00:59.104+0200 to 2018-09-01T14:01:02.306+0200

                      Hat jemand eine Idee, was da das Problem sein könnte?

                      Grüße
                      Steffen
                      Zuletzt geändert von stef42; 01.09.2018, 13:04.

                      Kommentar


                        #12
                        Kann es sein, dass Du eine Busadresse für das IP-Interface gesetzt hast (1.1.255)? Ist diese GA auch tatsächlich ungenutzt?

                        Kommentar


                          #13
                          Ja, die 1.1.255 ist die "Host physikalische Adresse" des IP-Interface in ETS, die wird sonst von keinem Gerät genutzt.

                          Ich hab mal spasseshalber einen neuen Channel erstellt, der DPT 19.001 (datetime) nutzt, und jetzt sieht das so aus:
                          Bild2.png

                          knx.things:
                          Code:
                          Type datetime-control : knx_datetime "Uhrzeit auf KNX-Bus" [ ga="19.001:5/1/3" ]
                          knx.items:
                          Code:
                          DateTime KNX_CurrentDateTime "Uhrzeit, Datum" {channel="knx:device:ipinterface:central:knx_datetime",channel="ntp:ntp:germany:dateTime"}
                          events.log:
                          Code:
                          2018-09-01 20:20:00.206 [vent.ItemStateChangedEvent] - KNX_CurrentDateTime changed from NULL to 2018-09-01T20:20:00.181+0200
                          2018-09-01 20:20:33.539 [vent.ItemStateChangedEvent] - KNX_CurrentDateTime changed from 2018-09-01T20:20:00.181+0200 to 2018-09-01T20:20:33.529+0200
                          2018-09-01 20:21:33.541 [vent.ItemStateChangedEvent] - KNX_CurrentDateTime changed from 2018-09-01T20:20:33.529+0200 to 2018-09-01T20:21:33.531+0200
                          2018-09-01 20:23:33.548 [vent.ItemStateChangedEvent] - KNX_CurrentDateTime changed from 2018-09-01T20:22:33.536+0200 to 2018-09-01T20:23:33.539+0200
                          2018-09-01 20:22:33.549 [vent.ItemStateChangedEvent] - KNX_CurrentDateTime changed from 2018-09-01T20:21:33.531+0200 to 2018-09-01T20:22:33.536+0200
                          D.h. das Datum wird immer noch 2x hintereinander auf den Bus geschickt, wenn das Datum über ntp aktualisiert wurde, statt nur 1x, aber immerhin nicht mehr in der Endlosschleife.
                          Leider verlangen meine Geräte auf dem Bus das Datum und die Uhrzeit separat in zwei Botschaften.
                          Zuletzt geändert von stef42; 01.09.2018, 19:30.

                          Kommentar


                            #14
                            Zitat von stef42 Beitrag anzeigen
                            Ja, die 1.1.255 ist die "Host physikalische Adresse" des IP-Interface in ETS, die wird sonst von keinem Gerät genutzt.
                            Aber damit ist die Adresse doch schon in Verwendung? Meines Wissens sollte die angegebene physikalische Adresse komplett ungenutzt sein, sprich, openHAB nutzt diese Adresse exklusiv.

                            Ansonsten, was die DPT betrifft, kommt es ja nur drauf an, was die Geräte benötigen. Es gibt (mindestens) 3 verschiedene DPT für Datum und/oder Zeit. openHAB kennt mindestens 10.001, 11.001 und 19.001, kann jeden dieser Typen senden und empfangen, wobei natürlich beim Empfang ein DateTime Item weder mit 10.001 noch mit 11.001 korrekt gesetzt wird - im einen Fall kommt nur der Wochentag mit, wird aber missinterpretiert, im anderen Fall fehlt die Uhrzeit. Glücklicherweise geht es normalerweise nur um die umgekehrte Richtung, also dass openHAB seine Zeit dem knx Bus zur Verfügung stellt.
                            Zuletzt geändert von udo1toni; 01.09.2018, 22:12.

                            Kommentar


                              #15
                              Stimmt, die GA hatte ich tatsächlich auch in OpenHAB eingetragen, habe sie jetzt auf eine definitiv freie GA geändert. Das Verhalten bzgl. Datum und Uhrzeit auf den Bus hat sich dadurch leider nicht verändert, er kommt immer noch in die Endlosschleife und flutet den Bus (so schnell es das IP-Interface hergibt) mit den Nachrichten.

                              Was mich stutzig macht, sind die Zeilen im Log-File, in denen steht "Item 'KNX_CurrentTime' received command....", und danach ändern sich die Inhalte des Items. Sieht so aus, als würde von irgendwo das Format von 19.001 (Datum mit Uhrzeit) auf 10.001 geändert (also das Datum gelöscht und nur die Zeit stehengelassen) und danach wird das wieder zurück geändert.
                              Code:
                              2018-09-02 09:03:39.441 [ome.event.ItemCommandEvent] - Item 'KNX_CurrentTime' received command 1970-01-04T09:00:11.000+0100
                              2018-09-02 09:03:39.451 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 2018-09-02T09:03:36.428+0200 to 1970-01-04T09:00:11.000+0100
                              2018-09-02 09:03:39.472 [vent.ItemStateChangedEvent] - KNX_CurrentTime changed from 1970-01-04T09:00:11.000+0100 to 2018-09-02T09:03:39.459+0200
                              2018-09-02 09:03:39.477 [vent.ItemStateChangedEvent] - KNX_CurrentDate changed from 2018-09-02T09:03:36.428+0200 to 2018-09-02T09:03:39.459+0200

                              Kommentar

                              Lädt...
                              X