Seite 1 von 2

Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Mo Dez 28, 2020 3:33 pm
von blaubaerli
Hallo zusammen,

Robert hat mich in diesem Post hier: viewtopic.php?f=65&t=2555#p28682 dazu motiviert, mal was zu meinem Lösungsansatz mit Schaltzeiten in der CometVisu zu schreiben.

Meine Lösung ist leider wieder nicht so einfach kompatibel zu den hier im Formum bereits geposteten Logiken zur Zeitfenstersteuerung bzw. neuen ZSU-Logik.

Ich hatte meine Schaltzeiten bereits als DPT 10.001 vorliegen und habe daher die erwähnten Logiken entsprechend anpassen müssen. Ich sende also nicht Stunde, Minute und Sekunde als getrennte Werte in die hier bekannten Logikbausteine.

Die Entscheidung mit dem DPT 10.001 zu arbeiten ist bei mir schon ewig alt, da ich hoffe damit zu den dann mal kommenden Standardlösungen von Elabnet kompatibel zu sein und sich dann die Umbauaufwände in Grenzen halten, wenn ich meine Interimslösungen gegen den Standard tauschen will.

Für mich ergab sich dann, dass wenn ich hier mit Schaltzeiten arbeiten will, für mich um den DPT 10.001 eigentlich kein Weg vorbei geht. Weil das der KNX-Standard einfach mal so vorsieht. Nun hat die CometVisu im Umgang mit diesem DPT nun leider nicht gerade ihre Stärken, zumindest was das Schreiben eines solchen Wertes angeht. (siehe dazu auch hier: viewtopic.php?f=37&t=1018)

Also sieht meine Lösung jetzt so aus, dass ich pro Schaltzeit zwei Objekte und zwei GA's im Einsatz habe. Jeweils einmal vom DPT 12.001 und einmal dann DPT 10.001.

Mit dem DPT 12.001 bastele ich mir dann originär über die CV die jeweiligen Sekunden ab Mitternacht zusammen, also im Wertebereich zwischen 0 und 86399. Das Ganze pro Uhrzeit in der CV mit jeweils zwei Infotriggern, einmal für Stunde und dann Minute. Zur Darstellung der Ergebnisuhrzeit nutze ich dann in der CV bereits die GA mit dem DPT 10.001.

Um die Übernahme des DPT 12.001-Wertes in das zugehörige DPT 10.001-Objekt des Wolfes, bzw. der damit verbundene GA zu bewerkstelligen, habe ich im "Objekt Manager" die beiden Objekte verknüpft.

Das sieht dann dazu konkret so aus:
28-12-_2020_13-51-35.jpg
Der auf ein rudimentäres Minimum reduzierte Code aus der CV:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<pages lib_version="8" design="metal" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../visu_config.xsd">
  <meta>
    <plugins>
      <plugin name="clock"/>
    </plugins>
    <mappings>
      <mapping name="TimeHM">
        <formula>y = x &amp;&amp; x.constructor === Date ? x.getHours() + ':' + (x.getMinutes()&lt;10?'0':'') + x.getMinutes() + ' Uhr' : x;</formula>
      </mapping>
      <mapping name="Leer">
        <entry value="*"/>
      </mapping>
    </mappings>
    <stylings>
    </stylings>
    <statusbar>
      <status type="html">&lt;img src="icon/comet_64_ff8000.png" alt="CometVisu" /&gt; by &lt;a href="http://www.cometvisu.org/"&gt;CometVisu.org&lt;/a&gt;
          - &lt;a href=".?forceReload=true"&gt;Reload&lt;/a&gt;</status>
      <status type="html" hrefextend="config" condition="!edit">- &lt;a href="editor/"&gt;Edit&lt;/a&gt;</status>
      <status type="html" hrefextend="config" condition="edit">- &lt;a href="."&gt;normal Mode&lt;/a&gt;</status>
      <status type="html">- &lt;a href="?config=demo"&gt;Widget Demo&lt;/a&gt;</status>
      <status type="html" hrefextend="config">- &lt;a href="check_config.php"&gt;Check Config&lt;/a&gt;</status>
    </statusbar>
  </meta>
  <page name="Zeiten">
    <layout colspan="12"/>
      <group name="Frühestens auf" nowidget="false">
        <layout colspan="3"/>
        <infotrigger mapping="Leer" align="center" styling="- not set - (undefined)" shorttime="300" infoposition="middle" max="86399" min="0" shortdownvalue="-3600" downvalue="-14400" shortupvalue="3600" change="absolute" upvalue="14400" downlabel="-" uplabel="+">
          <layout colspan="3"/>
          <label>Stunde</label>
          <address mode="readwrite" transform="DPT:12.001" variant="relative">12/1/0</address>
        </infotrigger>
        <infotrigger mapping="Leer" align="center" styling="- not set - (undefined)" shorttime="300" infoposition="middle" max="86399" min="0" shortdownvalue="-60" downvalue="-600" shortupvalue="60" change="absolute" upvalue="600" downlabel="-" uplabel="+">
          <layout colspan="3"/>
          <label>Minute</label>
          <address mode="readwrite" transform="DPT:12.001" variant="relative">12/1/0</address>
        </infotrigger>
        <info align="center" mapping="TimeHM">
          <layout colspan="3"/>
          <label>
            <icon name="time_clock"/>
          </label>
          <address mode="read" transform="DPT:10.001">12/1/1</address>
        </info>
      </group>
  </page>
</pages>
Der Aufbau der Weiterleitung im "Objekt Manager" sieht dann so aus:
28-12-_2020_14-17-36.jpg
  1. Das ist das Objekt mit dem DPT 12.001 (in der ETS mit der GA 12/1/0 verbunden)
  2. Und hier das vom DPT 10.001 (in der ETS mit der GA 12/1/1 verbunden)
  3. Das hier ist der Ausgang meiner persistierenden Logik für die Schaltzeiten (siehe dazu hier: viewtopic.php?f=65&t=1894)
  4. Und das eben der Eingang.
Vorteile des Ansatzes:
  • insgesamt weniger Hilfsobjekte im Einsatz
  • persistiert werden muss hier nur 1 Objekt pro Schaltzeit (der DPT 12.001-Wert)
  • Hoffentlich einfacher steckerkompatibel für künftige Dinge, da Nutzung des Standarddatentyps
Nachteil:
  • Die im Doktormodus der Logiken angezeigten Werte sind nicht gerade einfach "menschenlesbar", oder habt ihr schon nachgerechnet, wofür die 32400 im Screenshot steht :crying-yellow:. Wer also seine Schaltpunkte eh nicht über die CV editiert, ist mit der Aufspaltung der Zeiten auf Stunden/Minuten/Sekunden wohl besser dran. Aber das kann ich meiner Regierung wieder nicht zumuten. Parameter im Logikeditor ändern? Das hat wiederum leider einen gegen 0 tendierenden WAF (WomansAcceptanceFactor) :laughing-rolling:
Die Anpassungen der Logiken für das hier dargestellt System ist allerdings echt kein Hexenwerk. Statt der drei Eingangszeitwerte gibt es eben nur einen und das Errechnen des Schaltoffsets selbst entfällt dann.

Beste Grüße
Jens

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Mo Dez 28, 2020 10:50 pm
von Chris M.
blaubaerli hat geschrieben: Mo Dez 28, 2020 3:33 pm Für mich ergab sich dann, dass wenn ich hier mit Schaltzeiten arbeiten will, für mich um den DPT 10.001 eigentlich kein Weg vorbei geht. Weil das der KNX-Standard einfach mal so vorsieht. Nun hat die CometVisu im Umgang mit diesem DPT nun leider nicht gerade ihre Stärken, zumindest was das Schreiben eines solchen Wertes angeht. (siehe dazu auch hier: viewtopic.php?f=37&t=1018)
Seit dem Thread hat sich bei der CometVisu etwas getan, das Clock-Plugin ist ab dem kommenden 0.12 Release komplett überarbeitet, vgl. z.B. schon mal die Doku dafür: https://www.cometvisu.org/CometVisu/de/ ... index.html

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Mo Dez 28, 2020 11:45 pm
von blaubaerli
Hi Chris,

geilomat!

Ich hatte gestern mal ein wenig nach Neuerungen in der 12er gestöbert, war wohl aber zu doof was zu finden.

Wenn es was Sinnvolles zu testen gibt, sag Bescheid.

Beste Grüße
Jens

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Di Dez 29, 2020 10:39 am
von Robert_Mini
Hallo Jens!
blaubaerli hat geschrieben: Mo Dez 28, 2020 3:33 pm Also sieht meine Lösung jetzt so aus, dass ich pro Schaltzeit zwei Objekte und zwei GA's im Einsatz habe. Jeweils einmal vom DPT 12.001 und einmal dann DPT 10.001.
Wieso brauchst du pro Zeitpunkt 2 GA?, d.h. wiederum 4 GA für Ein+Ausschalten - richtig?
Mehr hab ich im Moment auch nicht: h_ein, min_ein, h_aus, min_aus.

Aber einem DPT10 pro Zeitpunkt könnte ich natürlich was abgewinnen.

lg
Robert

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Di Dez 29, 2020 11:51 am
von blaubaerli
Hallo Robert,

habe ich da nicht irgendwo Sekunden gesehen? Und dann musst du die auch alle gesondert durch die Persistenzlogik schleifen.

In der Persistenz habe ich nur genau den einen Wert.

Wenn ich pro Schaltpunkt aktuell 2 Objekte mit unterschiedlichem DPT habe und beide in der Visu nutzbar haben will, dann brauche ich doch auch jeweils eine zugehörige GA mit dem passenden DPT, oder? :confusion-scratchheadyellow:

Aber ich werde jetzt mal mit der neuen Version der Visu experimentieren. Dann vereinfascht sich das ja nochmal deutlich. Ein Objekt mit einer GA, beides vom DPT 10.001 und dann nur genau das eine Objekt in die Persistenzlogik und Anzeige und Modifikation in der CV über das neue Plugin. :dance:. Hier bliebe dann "nur" noch der "Nachteil" mit den nicht dekodierten Schaltwerten im Doktormodus.
Ich werde berichten.

Beste Grüße
Jens

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Di Dez 29, 2020 12:08 pm
von Robert_Mini
Hallo Jens!

Du hast recht. Mit den Sekunden wird es noch deutlicher und Persistenz hatte ich nicht am Radar.
blaubaerli hat geschrieben: Di Dez 29, 2020 11:51 am Hier bliebe dann "nur" noch der "Nachteil" mit den nicht dekodierten Schaltwerten im Doktormodus.
Naja, die ZSU läuft in unix-time, ist im Dokmode auch nicht besser lesbar..., außer dass der Input in hh:mm:ss ist.
Man könnte aber die DPT10-Zeit einfach durch einen Unix-Zeitwandler schicken und optional hh und mm ausgeben...

Ich bau das mal mit ein:
- Schaltzeiten optional als DPT10 (=> wenn eine der beiden <> 0, dann werden die DPT10 verwendet)
- Ausgabe der gewandelten Schaltzeiten als optionale Ausgänge

lg
Robert

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Di Dez 29, 2020 6:16 pm
von SchlaubySchlu
Hallo Gemeinde,
da ich aktuell ja auch versuche eine Zeitschaltuhr in meinen TWS zu bekommen bin ich auch schon über die Thematik getrennte GA's für Stunde, Minute, Sekunde vs. DPT10 gestoplert bin.
Eigentlich bin ich der Meinung das ein Handling über DPT10 besser wäre als getrennte GA's aber das würde dann bedeuten das wir einen Logik-Baustein benötigen der eine Umformatierung macht, bzw. müssten auch die Astro-Umrechnungs-Logiken angepasst werden. So eine Umformatierungs-Logik könnte auch bei den Problemen der Nichtlesbarkeit des DPT10 helfen oder?

Grüße
Ralf

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Di Dez 29, 2020 6:31 pm
von blaubaerli
Hallo Ralf,

schau mal hier: viewtopic.php?f=37&t=2539&p=28396#p28396

Da gibt es schon was von "Stefanopharm" :handgestures-thumbsup:

Beste Grüße
Jens

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Di Dez 29, 2020 7:16 pm
von SchlaubySchlu
Danke für den Tipp

Re: Beispiel für dem Umgang mit Schaltzeiten

Verfasst: Di Dez 29, 2020 7:24 pm
von Robert_Mini
Hallo Ralf!
Ich bin schon dabei, die ZSU um den DPT10 zu erweitern...

lg
Robert