Hallo,
als kompletter html Anfänger muss ich wieder einmal lästig sein:
Ich bin gerade am Basteln für meine Jalousiesteuerung (siehe ui1.jpeg und ui2.jpeg) Der Anstoß für das Circle Menu kommt aus diesem forum (danke haeksler an dieser Stelle)
Ruft man z.b: "^"-Button auf macht er derzeit:
set wz_JalousieFenster pctSlat 25
Also er stellt die Lamellen der Jalousie auf 25°. Soweit so gut. Mein Problem/Anliegen ist nun folgendes:
Bei erneuten klick macht er wieder das gleiche also nichts, sollten die Lamellen schon auf 25° stehen. Ich möchte aber gerne dass er wieder um 25° erhöht also in diesem Fall auf 50° einstellt.
Ich müsste also den aktuellen pctSlat des Aktors auslesen und dann meine 25° dazu addieren.
ich hab leider wenig Ahnung von HTML.
Vielleicht ist ja jemand so nett und kann mir ein Beispiel beschreiben.
Hier mein aktueller Code für die Steuerung:
<div class="cell">
<div data-type="label" class="cell wider">Jalousie WZ Fenster</div>
<div data-type="slider" data-device="wz_JalousieFenster" data-get="STATE" data-min="0" data-max="100" data-on='(on|closed|down)' data-off='(open|off)' data-value=true class="negated"></div>
<div data-type="circlemenu" data-direction="right-half" data-circle-radius="90" data-item-diameter="67" class="circlemenu right-space top-space-3x" style="font-size:130%">
<ul class="menu">
<li> <div data-type="push" data-icon="fa-bars"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-double-up" data-set-on="off"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-up" data-set-on="pctSlat 25"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-minus" data-set-on="stop"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-down" data-set-on="down 25"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-double-down" data-set-on="on"></div></li>
</ul>
</div>
</div>
Vielen Dank für jegliche Hilfe und ein gutes neues Jahr 2018!
Tobi
Moin Tobi,
ohne dass ich mir das jetzt im Detail angesehen habe:
1.) Unterstützt deine Jalousie das Verschieben um einen Prozentwert, oder - wie dargestellt - nur auf einen pct-Wert?
2.) Insgesamt ist die Frage wahrscheinlich besser im TabletUI-Unterforum aufgehoben (Verschieben-Button ganz unten links)
Grüße,
Oli
Hallo Oli,
danke für deine Rückmeldung, habe den Thread direkt verschoben :)
@1.) nein ich denke ich kann nur starre Werte eingeben und nicht "um" prozent verstellen. Ich habe den HM-LC-Ja1PBU-FM im Einsatz. Dieser kann dieze zwei Methoden meines Wissens nach:
set wz_JalousieFenster pctSlat 25
und das hier (fahre auf 50 prozent und stelle Lamellen auf 25% Neigung):
set wz_JalousieFenster pctLvlSlat 50 25
Danke Tobi!
das hier ist ja die zeile für den push-button der mir derzeit auf starre 25% Lamellen einstellt:
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-up" data-set-on="pctSlat 25"></div></li>
Mein Gedankengang wäre jetz anstatt data-set-on="pctSlat 25"
sowas in der Art (wie man es genau schreibt, weiß ich halt leider nicht):
data-set-on="pctSlat <GetReading(pctSlat)> + 25"
LG Tobi
Als Idee: vielleicht geht's als Workaround mit einem UserReading (ungetestet)
Beispiel:
reading wz_JalousieFenster:uiMovePercent wird gesetzt von dem UI auf ^^ "25"
userReading uiCalcPosition:uiMovePercent.* {ReadingsVal($name","uiMovePercent",0)+ReadingsVal($name","totalPosition",0)}
userReading totalPosition:uiCalcPosition.* {my $val = ReadingsVal($Name,"uiCalcPosition",0); fhem"set wz_JalousieFenster pctLvlSlat $val"); $val;}
Grüße,
Stephan
Hi Stephan,
ich kann leider als Anfänger deiner Antwort nicht ganz folgen...
Die userReadings die du da geschrieben hast, gehören nicht in die index.html oder?
LG Stefan
userreadings hast Du in Deinem Device
Alternativ kannst Du Dir natürlich eine Logik in FHEM aufbauen.
Z. B. einen Dummy für das Drücken des Buttons.
Darauf lässt Du ein DOIF laufen, welches pro Betätigung einen Wert (z. B. 25) dazu addiert und nach kurzer Zeit wieder initialisiert.
Zusätzlich lässt Du dann mit dem neuen Wert Dein set device pctSlat [Dummywert] ausführen.
Hi,
die userReadings würde ich in dem RolladenDevice anlegen.
Funktion sollte die gleiche werden wie mit einem zusätzlichen DOIF, allerdings ohne den Overhead eines zusätzlichen Devices.
https://wiki.fhem.de/wiki/UserReadings
Grüße,
Stephan
Danke euch zwei für die Tips!
Werd mich mal in das Thema Dummys+DOIF und UserReadings einlesen und ggfs auf euch zurück kommen :)
Bzgl. Dummy ist das Modul Dummy gemeint und nicht das Dummy attribut, oder?
LG Tobi
ja genau. Bei meinem Beispiel würdest Du einen Dummy anlegen mit
define DEINDUMMY dummy
Hi Gunther,
ja das leuchtet mir noch ein :)
Ist mein Gedankengang mit Dummy und DOIF so realisierbar bzw. der richtige weg?
define MyLamValue dummy
-beim push button Lamellen auf folgendes hinterlegen:
<li> <div data-type="push" data-device="MyLamValue" data-icon="fa-angle-up" data-set-on="on"></div></li>
-beim Lamellen down button folgendes hinterlegen:
<li> <div data-type="push" data-device="MyLamValue" data-icon="fa-angle-up" data-set-on="off"></div></li>
-DOIF so anlegen:
define myValue DOIF ([MyLamValue:"on"]) (set wz_JalousieFenster:pctslat+25) DOELSE (set wz_JalousieFenster:pctslat-25)
Stimmt das so? Bzw. Geht das mit dem Reading wz_JalousieFenster:pctslat+25?
DOELSE führt er aus, wenn myLamValue:"off" ist (also der down button gedrückt wird)?
Sorry für die vielen Fragen, aber Dummys und DOIF übersteigen meine Newbie Kentnisse um einiges ^^
Danke für eure Unterstützung!
LG Tobi
Der Hinweis auf UserReadings erschiene mir auch einfacher. Jetzt mal ungetestet:
userReading beim Device wz_JalousieFenster
pctSlatSoll {ReadingsVal($NAME,"pctSlat",0)+25}
und dann
data-set-on="pctSlat [wz_JalousieFenster:pctSlatSoll]"
Teste mal das Userreading. Wenns nicht klappt schauen wir weiter.
Neben der in meinen Augen nicht funktionierenden Logik hast Du da noch Syntaxfehler drin.
Hi,
danke sinus für die wirklich einfache erklärung :)
Also das reine auf addieren klappt super :)
Aber ich muss ja auch mit dem down button die JalousieLamellen wieder subtrahieren können.
Es gibt ja nur ein User reading pro Gerät. Hab es wie im angehängten Bild eingestellt. Aber es verhält sich noch etwas komisch.
Hier auch der index.html code:
<div data-type="slider" data-device="wz_JalousieFenster" data-get="STATE" data-min="0" data-max="100" data-on='(on|closed|down)' data-off='(open|off)' data-value=true class="negated"></div>
<div data-type="circlemenu" data-direction="right-half" data-circle-radius="90" data-item-diameter="67" class="circlemenu right-space top-space-3x" style="font-size:130%">
<ul class="menu">
<li> <div data-type="push" data-icon="fa-bars"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-double-up" data-set-on="off"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-up" data-set-on="pctSlat [wz_JalousieFenster:pctSlatSoll]"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-minus" data-set-on="stop"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-down" data-set-on="pctSlat [wz_JalousieFenster:pctSlatSollOff]"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-double-down" data-set-on="on"></div></li>
</ul>
</div>
</div>
Stelle ich die lammelen jetzt drei mal um 25 ° höher ist pctSlat auf 75° was ja ok ist.
Drücke ich dann aber down macht er beim ersten mal nichts, erst beim zweiten Klick stellt er auf 51°... was ich gar nicht verstehen kann? pctSlatSollOff ist zu der Zeit 26? wo kommt die Differenz um 1 her?
Beim nächsten Down Klick passiert dann wieder nichts. Beim 4ten Klick geht dann pctSlat auf 27°? und pctSlatSollOff auf 2?
Hab ich da bei den UserReadings was falsch gemacht? oder was übersehe ich?
Danke viel mals für eure Hilfe!
LG Tobi
Wie sind denn die Werte für pctSlatSoll und pctSlatSollOff wenn pctSlat auf 75 gefahren ist?
pctSlat=75
pctSlatSoll=100
pctSlatSollOff=50
Sollte so ja auch sein.
Das Problem ist nur, wenn ich jetzt down (also -25°) klicke passiert gar nichts (er geht NICHT auf 50).
Klick ich dann nochmals auf down stellt er wie folgt ein:
pctSlat=51
pctSlatSoll=76
pctSlatSollOff=26
Wo kommt die Verschiebung um den Wert 1 her? und warum reagiert er beim ersten down-Klick nicht?
Hast Du es mal ein FHEM direkt probiert? Ich hab es mal mit einem Dummy nachgestellt und dreimal
setreading wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSoll]
eingegeben und dann
setreading wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSollOff]
und es funktioniert wie erwartet.
Und haben sich denn die Werte in FHEM irgendwie verändert nachdem Du einmal down geklickt hast?
Fällt mir sonst im Moment nichts zu ein.
Hmm das ist jetzt mal interessant.
Also mit deinem Ansatz mit setreading klappt es in fhem in beide Richtungen.
Nehme ich jetzt die Befehle von meiner FTUI her und gebe sie direkt in fhem ein, ist es wie zuvor beschrieben (dazuaddieren klappt problemlos, subtrahieren tut er beim ersten mal nicht, un dann um 1 verschoben):
set wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSoll]
set wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSollOff]
Kann ich meine index.html umbauen, damit sie setreading anstatt set macht? Ich sag ja eigentlich ja nur was bei data-set-on gemacht werden soll (also= pctSlat [wz_JalousieFenster:pctSlatSoll]):
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-up" data-set-on="pctSlat [wz_JalousieFenster:pctSlatSoll]"></div></li>
<li> <div data-type="push" data-device="wz_JalousieFenster" data-icon="fa-angle-down" data-set-on="pctSlat [wz_JalousieFenster:pctSlatSollOff]"></div></li>
danke für die unermüdliche und wertvolle Hilfe!!
LG Tobi
glaube mit data-cmd="setreading" kannst Du das machen
perfekt data-cmd="setreading" klappt.
Damit funktioniert nun auch alles richtig in meiner GUI :)
warum es mit set anstatt setreading nicht geht, wird wohl ein Geheimnis bleiben :)
Danke vielmals euch allen!!
LG Tobi
Ok leider doch zu früh gefreut.... setreading setzt zwar die Reading gibt aber keinen Befehl an den homematic Autor... nur set lässt die Lamellen drehen....
Kann man das senden der Reading händisch anstoßen?
Oder hat noch jemand eine Idee warum sich setreading anders verhält als set?
Danke tobi
hmm, beide gleichzeitig meinst Du?
Kenne mich mit userreadings leider 0 aus.
Mein Ansatz wäre nun einen Dummy in Tablet UI zu verwenden und dann ein DOIF oder notify zu nutzen, wo bei Veränderung des Dummy entsprechend beides ausgeführt wird.
Oder so beim Nachdenken:
ohne Dummy auf das Event des setreading reagieren und ein set homatic-Actor entsprechend mit dem ausgeführten Befehl mitschicken.
Vielleicht hat setstate aber eine viel einfachere Lösung parat.
Glaube es gibt auch die Möglichkeit einen kompletten FHEM-Befehl mitzuschicken. Vielleicht kann man da einfach beides reinpacken.
Zitat von: Gunther am 04 Januar 2018, 18:53:44
Oder so beim Nachdenken:
ohne Dummy auf das Event des setreading reagieren und ein set homatic-Actor entsprechend mit dem ausgeführten Befehl mitschicken.
Ja an sowas hab ich vorher gedacht:
Wenn setreading auf dem postlagernd passiert soll set device pctslat mit den aktuellen Reading an den Autor gesendet werden...
Das macht man wahrscheinlich mit doif? Ich tu mir nur leider derzeit sehr schwer mit der Syntax von doif....
Lg tobi
Das Reading pctSlat sollte sich im Aktor ja nach einem Set Befehl selber ändern, das lässt sich mit einem dummy ja aber nicht nachstellen, daher hab ich das nur mit setreading probiert.
Geht es denn mit
set wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSoll]
in Fhem ? Schwer zu sagen wie so sonst der Fehler liegt.
set wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSoll]
funktioniert.
Nur set wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSollOff]
funktioniert nicht.
Verstehe nicht warum setreading wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSollOff]
funktioniert, aber set wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSollOff]
nicht?
Zitat von: NewMatic am 04 Januar 2018, 22:02:52
Nur set wz_JalousieFenster pctSlat [wz_JalousieFenster:pctSlatSollOff]
funktioniert nicht.
Und funktioniert dann in dem Moment das:
set wz_JalousieFenster pctSlat xx
wobei xx der Wert ist der gerade in pctSlatSollOff steht?
auch mit set auf den pctSlatSollOff verhält es sich gleich....
Ist da was in der Firmware vom HM-LC-Ja1PBU-FM krum?
es hat aber denke ich wenig mit meinem UserReading pctSlatSollOff zu tun...
Ganz generell scheint die Firmware/Aktor ein Problem zu haben wenn ein wert gesetzt wird, der kleiner als der aktuelle pctSlat ist. Zwar nicht jedesmal, aber gefühlt jedes zweite mal....
Scheint so. Entweder im Aktor oder in CUL_HM, das wäre dann aber eher was für den Homematic Bereich um das Problem zu lösen.
Ja wird wohl das beste sein...
Hab es im Homematic Bereich nochmal neu zusammengefasst.. da dieser Thread doch schon stark gewachsen ist ;)
https://forum.fhem.de/index.php/topic,82297.0.html
LG Tobi