FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Tomo am 21 März 2019, 09:23:23

Titel: [gelöst] webCMD - Wie werden ":" escaped?
Beitrag von: Tomo am 21 März 2019, 09:23:23
All,

ich versuche mittels WebCmd einen Button/Link einzufügen mit dem ein "on-till 16:00:00" (für einen CUL_HM Switch) mittels eines Klicks gesetzt werden kann.

Leider scheitere ich daran, den String mit den Doppelpunkten korrekt zu escapen - ich habe intensivst gesucht und alle mir bekannten Varianten versucht (liste die alle mal aber aus Vereinfachungsgründen nicht).
Die einfachste (und ganz offensichtlich nicht korrekte) war:
attr SW_Licht webCmd on:off:'on-till 16:00:00'
oder auch
attr SW_Licht webCmd on:off:on-till '16/x3a00/x3a00'
oder ...

Wie geht's denn richtig?

Vielen Dank dafür!

Gruss,
Tom
Titel: Antw:webCMD - Wie werden Strings escaped?
Beitrag von: DeeSPe am 21 März 2019, 09:46:55
Hast Du es mal mit escapen der Doppelpunkte probiert?

attr SW_Licht webCmd on:off:on-till 16\:00\:00

Gruß
Dan
Titel: Antw:webCMD - Wie werden Strings escaped?
Beitrag von: Tomo am 21 März 2019, 10:14:01
Hi, ja hatte ich.

Dann sieht es so wie im Anhang aus - der String wird in einzelne klickbare Links aufgeteilt, die jeweils als einzelne Argumente interpretiert werden - d.h. auch der "Escapte" Doppelpunkt wird weiterhin als Trennzeichen für die Argumente interpretiert.

Das funktioniert also leider nicht.

Gruss,
Tom
Titel: Antw:webCMD - Wie werden Strings escaped?
Beitrag von: DeeSPe am 21 März 2019, 10:46:28
Zitat von: Tomo am 21 März 2019, 10:14:01
Hi, ja hatte ich.

Dann sieht es so wie im Anhang aus - der String wird in einzelne klickbare Links aufgeteilt, die jeweils als einzelne Argumente interpretiert werden - d.h. auch der "Escapte" Doppelpunkt wird weiterhin als Trennzeichen für die Argumente interpretiert.

Das funktioniert also leider nicht.

Gruss,
Tom

Einde funktionierende Möglichkeit wäre z.B. mit widgetOverride:
attr SW_Licht webCmd on:off:on-till
attr SW_Licht widgetOverride on-till:00:00,01:00,02:00,03:00,04:00,05:00,06:00,07:00,08:00,09:00,10:00,11:00,12:00,13:00,14:00,15:00,16:00,17:00,18:00,19:00,20:00,21:00,22:00,23:00


Gruß
Dan
Titel: webCMD - Wie werden Strings escaped?
Beitrag von: justme1968 am 21 März 2019, 12:33:28
oder per eventMap ein kommando ohne leerzeichen und andere problematische zeichen draus machen und dieses dann in den webCmd verwenden.
Titel: Antw:webCMD - Wie werden Strings escaped?
Beitrag von: DeeSPe am 21 März 2019, 12:59:40
Zitat von: justme1968 am 21 März 2019, 12:33:28
oder per eventMap ein kommando ohne leerzeichen und andere problematische zeichen draus machen und dieses dann in den webCmd verwenden.

An eventMap hatte ich auch als erstes gedacht, wusste dann aber nicht weiter weil eventMap den Doppelpunkt als Trenner zwischen altem und neuem Befehl verwendet.

Gruß
Dan
Titel: webCMD - Wie werden ":" escaped?
Beitrag von: Tomo am 21 März 2019, 14:11:00
...mit widgetOverride funktioniert es prinzipiell, allerdings liefert mir widgetOverride auch bei nur einem Wert (hier: 16:00:00) bereits eine Dropdown-Box, die im Default leer ist. D.h. ich muss die Box aufklappen und dann den (einzigen) Wert auswählen.

Das ist zwar nutzbar, aber nicht so schön - ich hätte eigentlich gerne nur "einen" klickbaren Link (egal wie der aussieht), der dann "on-till 16:00:00" setzt.

Wenn jemand noch gute Ideen dazu hat bin ich dankbar.

[Anm. ich habe das Topic umformuliert, da es nicht exakt war)

Gruss,
Tom
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: betateilchen am 21 März 2019, 14:21:08
Meinst Du sowas wie im Anhang?

attr d1 webCmd on:off:on-till 16:;00:;00
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: Tomo am 21 März 2019, 14:38:42
Exakt das!

Allerdings sah es bei mir so wie im Anhang aus - ein ";" jeweils zu viel.
Damit hat es dann (zumindest mal optisch) geklappt - ich hoffe, er setzt den Wert auch richtig (das sehe ich tatsächlich nirgends...): 16:01:00

Dank an Alle!
Gruss,
Tom
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: betateilchen am 21 März 2019, 14:44:52
Die Anzahl der Semikolon hängt davon ab, wo man die Eingabe für das Attribut hernimmt.

Bei mir funktioniert das Setzen jedenfalls problemlos, Du kannst das mit der folgenden raw-Definition testen


defmod d1 dummy
attr d1 webCmd on:off:on-till 16:;00:;00


danach kannst Du auf den Link klicken und wirst sehen, dass das korrekte Icon für on-till gesetzt wird. Der Timer läuft natürlich bei einem dummy nicht ab, also nicht wundern.

Und wenn Du das Ganze mit einem FS20 dummy testest, wirst Du sogar das zugehörige at finden, das die Lampe um 16 Uhr wieder abschalten wird.
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: betateilchen am 21 März 2019, 14:53:32
Zitat von: Tomo am 21 März 2019, 09:23:23
ich versuche mittels WebCmd einen Button/Link einzufügen mit dem ein "on-till 16:00:00" (für einen CUL_HM Switch) mittels eines Klicks gesetzt werden kann.

Zitat von: Tomo am 21 März 2019, 14:38:42
ich hoffe, er setzt den Wert auch richtig (das sehe ich tatsächlich nirgends...)

doch, bei HM Aktoren siehst Du das daran, dass das reading "timedOn" den Wert "running" hat. Das bedeutet, dass ein Timer läuft.
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: Tomo am 21 März 2019, 14:59:41
Ja, dass der Timer läuft sieht man. Ich habe nur noch keine Möglichkeit gefunden, den Timerendwert/Abschaltzeitpunkt auszulesen.

Anyway - jetzt tut es!

Vielen Dank nochmals!
Gruss,
Tom
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: betateilchen am 21 März 2019, 15:09:11
Zitat von: Tomo am 21 März 2019, 14:59:41
Ich habe nur noch keine Möglichkeit gefunden, den Timerendwert/Abschaltzeitpunkt auszulesen.

Es gibt (bei HM) keine Möglichkeit, das herauszufinden.
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: justme1968 am 21 März 2019, 15:14:39
zu eventMap: die perl version von eventMap ist nicht auf trennzeichen angewiesen.

den timer kann man nachtäglich nicht auslesen. aber man kann auf das set_on-til event reagieren und dann alles weitere selber machen. ähnlich wie es hier: https://forum.fhem.de/index.php/topic,84016.msg762888.html#msg762888 (https://forum.fhem.de/index.php/topic,84016.msg762888.html#msg762888) für on-for-timer gemacht wird.
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: betateilchen am 21 März 2019, 15:17:17
Zitat von: justme1968 am 21 März 2019, 15:14:39
aber man kann auf das set-on-til event reagieren

wenn schon, dann bitte richtig: set_on-till :)
Titel: Antw:webCMD - Wie werden ":" escaped?
Beitrag von: justme1968 am 21 März 2019, 15:20:40
ja.ja. :P