NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[Gelöst] [CV 12 RC5] Darstellung abgelaufener Timer in der CV

Rund um die CometVisu im Timberwolf Server
Antworten

Ersteller
blaubaerli
Reactions:
Beiträge: 2326
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 898 Mal
Danksagung erhalten: 700 Mal

[CV 12 RC5] Darstellung abgelaufener Timer in der CV

#1

Beitrag von blaubaerli »

Hallo zusammen,

ich habe mich im Urlaub der Einbindung neuer Heizkörperthermostate in Logik und Visualisierung gewidmet. Dabei tauchte dann auch das Thema auf, wann man bei offenem Fenster die Temperatur absenkt, wie lange gelüftet werden sollte und was man macht, wenn die gewünschte Lüftungszeit überschritten wurde.

Dabei ging es zum Einen um die Visualisierung der Lüftungszeit und dann auch um die Alamierung, wenn die gewünschte Zeit überschritten wurde.

Um mir das Umrechnen des Sekunden-Ergebnisses aus dem Timer in Stunden, Minuten und Sekunden zu sparen, bin ich auf die Idee gekommen, hier mal den DPT 10.001 zu nutzen und den dann vom Clock-Plugin entsprechend darstellen zu lassen. Klappt auch prima, solange ich im positiven Zahlenbereich bin. Wenn der Timer abgelaufen, aber noch nicht gestoppt ist, bekomme ich einen negativen Zahlenwert. Damit kann das Clock-Plugin leider nicht umgehen.

Also, korrekt für die Aktion ist wohl der DPT 8.005. Wenn darin nun das Ergebnis meines Timers steht und der Wert nun sowohl positiv, als auch negativ sein kann, dann kann man da bestimmt mit den Formeln in den Mappings und JavaScript was bauen siehe Doku hier.

Ich hätte gerne eine Darstellung der Form HH:MM:SS und bei einem negativen Wert ein vorangestelltes "-"-Zeichen (Minus) und eine Einfärbung des Strings in rot.

Dazu habe ich aber nicht genügend JS-Know-How. Hat von euch schon mal jemand so was gebaut? :confusion-scratchheadyellow:

Danke.

Beste Grüße
Jens
wiregate1250 & timberwolf168 (2600er), VPN offen, Reboot nach Vereinbarung
Bitte WIKI lesen.
Benutzeravatar

Chris M.
Reactions:
Beiträge: 1194
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 237 Mal
Danksagung erhalten: 857 Mal
Kontaktdaten:

#2

Beitrag von Chris M. »

Ich verstehe nur halb was Du machen möchtest.
Ein DPT:10 kann prinzipiell keine negativen Uhrzeiten.

Wie soll die Darstellung am Schluss aussehen?
Mit einer Uhr und Ziffernblatt?
Nur eine Darstellung oder auch eine Interaktion bei der der Visu-User was einstellen kann?
Was liegt für eine Eingangsgröße vor? (Hab ich richtig verstanden, dass das erst mal eine Vorzeichen behaftete Zahl mit Sekunden ist?)

Auch wenn die Randbedingungen mir noch nicht klar sind, schon mal der Versuch einer Lösungsidee ohne fiese JavaScript-Tricks: hast Du mal auf das neue Roundbar-Widget geschaut, ob das nicht damit umsetzbar ist?
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

Ersteller
blaubaerli
Reactions:
Beiträge: 2326
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 898 Mal
Danksagung erhalten: 700 Mal

#3

Beitrag von blaubaerli »

Hallo Chris,

genau weil der DPT 10.001 nicht vorzeichenbehaftet ist, habe ich das damit dann verworfen.

Ansatz ist nun den DPT 8.005 zu nutzen. Also vorzeichenbehaftet und Inhalt Sekunden. Den versuchte ich nun ohne Ziffernblatt über ein Info-Widget nur lesend entsprechend darzustellen. Der Visu User soll da also nichts einstellen können.

Das Roundbar-Widget hatte ich noch nicht entdeckt. Schaue ich mal, aber die Umrechnung des Sekundenwertes in Stunden, Minuten und Sekunden nimmt mir das ja auch nicht ab. Ich kann darüber die Situation zwar schön visualisieren, aber der WAF ist bei höheren Sekundenwerten halt nicht sooooo dolle.

Beste Grüße
Jens
wiregate1250 & timberwolf168 (2600er), VPN offen, Reboot nach Vereinbarung
Bitte WIKI lesen.
Benutzeravatar

Chris M.
Reactions:
Beiträge: 1194
Registriert: Sa Aug 11, 2018 10:52 pm
Wohnort: Oberbayern
Hat sich bedankt: 237 Mal
Danksagung erhalten: 857 Mal
Kontaktdaten:

#4

Beitrag von Chris M. »

Eine vorzeichenbehaftete Zahl in einen String vom Format einer typischen Zeit mit Stunden, Minuten und Sekunden zu konvertieren geht mit:

Code: Alles auswählen

sign=x<0?'-':'';x=Math.abs(x);hours=Math.floor(x/3600);minutes=Math.floor((x-hours*3600)/60);seconds=x-hours*3600-minutes*60;y=[sign+hours,('0'+minutes).substr(-2),('0'+seconds).substr(-2)].join(':')
In einem <formula> in einem <mapping> hab ich das zwar nicht ausprobiert, sollte aber schon funktionieren. Das "<" muss dann halt durch ein "&lt;" ersetzt werden, damit das gültiges XML ist.
CometVisu Entwickler - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

CometVisu Fragen, Bugs, ... bitte im Entwicklungs-Forum, hier nur spezifisches für CV<->Timberwolf.

TWS 2500 ID: 76 + TP-UART - VPN offen, Reboot nur nach Absprache

Ersteller
blaubaerli
Reactions:
Beiträge: 2326
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 898 Mal
Danksagung erhalten: 700 Mal

#5

Beitrag von blaubaerli »

Hallo Chris,

danke für die Hilfestellung! :bow-yellow: :handgestures-thumbupright:

Hier mal als Doku für mitlesende Foristen:
  • DPT 8.005 mittels ETS für das relevante Objekt im TWS freischalten und die entsprechende GA zuordnen
  • Dann in der CV-Konfigurationsdatei ein entsprechendes "mapping" hinterlegen:

    Code: Alles auswählen

    <mapping name="HourMinute">
       <formula>y = sign=x&lt;0?&apos;-&apos;:&apos;&apos;;x=Math.abs(x);hours=Math.floor(x/3600);minutes=Math.floor((x-hours*3600)/60);seconds=x-hours*3600-minutes*60;y=[sign+hours,(&apos;0&apos;+minutes).substr(-2),(&apos;0&apos;+seconds).substr(-2)].join(&apos;:&apos;);</formula>
    </mapping>
    
  • Optional für die Einfärbung der Anzeige noch einen "styling"-Eintrag zufügen:

    Code: Alles auswählen

    <styling name="Ventilationtime">
       <entry range_max="1">red</entry>
       <entry range_min="0" default="true">green</entry>
    </styling>
  • Dann verbleibt noch der eigentliche Eintrag:

    Code: Alles auswählen

    <info mapping="HourMinute" styling="Ventilationtime">
       <label>Beispiel</label>
       <address transform="DPT:8" mode="read">X/X/X</address>
    </info>
Und nun viel Spaß beim Nachkochen. ;) :D

Beste Grüße
Jens
wiregate1250 & timberwolf168 (2600er), VPN offen, Reboot nach Vereinbarung
Bitte WIKI lesen.
Antworten

Zurück zu „CometVisu“