[gelöst] webCMD - Wie werden ":" escaped?

Begonnen von Tomo, 21 März 2019, 09:23:23

Vorheriges Thema - Nächstes Thema

Tomo

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

DeeSPe

Hast Du es mal mit escapen der Doppelpunkte probiert?

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

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Tomo

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

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

justme1968

oder per eventMap ein kommando ohne leerzeichen und andere problematische zeichen draus machen und dieses dann in den webCmd verwenden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Tomo

...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

betateilchen

Meinst Du sowas wie im Anhang?

attr d1 webCmd on:off:on-till 16:;00:;00
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tomo

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

betateilchen

#9
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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Tomo

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

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

#13
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 für on-for-timer gemacht wird.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

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 :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!