Closed bgewehr closed 9 years ago
Sowas wie:
//sunrise und sundown selector
template += "<td><select ' name='uzsuSUN" + numberOfRow +"' id='uzsuSUN" + numberOfRow +"' data-mini='true'><option value='-'>--</option><option value='SA+'>SA+</option><option value='SA-'>SA-</option><option value='SU+'>SU+</option><option value='SU-'>SU-</option></select><\/td>";
Zwischen value und time, sieht gar nicht schlecht aus!
Hallo Bernd
hatte ich schon in den Pull request geschrieben. Es gibt bei smarthome.py im UZSU Plugin die Möglichkeit <sunset+1 anzugeben. Das schreibst Du einfach in den Zeitstring rein. Damit ist die Funktion hier schon gegeben. Ein Aufbohren des Dicts geht nicht wirklich, da das dicts und die Schnittstelle zum Widget durch das Plugin vorgegeben ist. Das kann ich nicht ändern.
Kannst Du nicht versuchen, das auch so nach FHEM so reinzubekommen ?
Michel
Im Fhem kann man schreiben {sunrise(1800)}, das heißt dann 30 Minuten nach dem Sonnenaufgang.
Ich fand das nur nicht schön für die Benutzer!
Kann ich aber zur Not auch erst mal mit leben. PR zurückgezogen!
Man könnte allerdings auch den String jeweils so zusammensetzen, wie man ihn braucht, für SH oder fhem, aber dennoch auf der Oberfläche die Steuerelemente fprndie User anbieten, um es auch elegant eingeben zu können. Wir kriegen doch im JavaScript auch hin, einen Zeitstring daraus so oder so zu gestalten und beim Lesen Rückwärts, oder?
Das nehme ich nochmal mit, ob so etwas sinnvoll möglich ist. Hast Du eine Idee, wie man sh und FHEM unterscheiden kann (evt. etwas eleganter als nur einen Parameter mit dazuzugeben)
Es geht eigentlich auch so, dass in fhem die Übersetzung von <Sunset+2 in {sunset(7200)} erfolgt, ist dort nun nicht unmöglich. Besser eine gemeinsame UZSU und Interpreter im fhem Modul.
Ist dies hier für Dich verworfen oder verschoben?
Im Moment verschoben. Ich hab im Moment noch andere Sachen zu tun, und da hat das Prio 2, wird also eher etwas brauchen.
Hallo Bernd,
ich hab gerade angefangen mir einmal Gedanken dazu zu machen. In smarthome gibt es das Format H:M<[+/-][offset][<H:M]. Könnt Ihr das bei FHEM in gleicher Weise nutzen ? Neben offset gibt es nämlich auch die Möglichkeit Lower und Upper Boundaries zu setzen.
Michel
Kannst Du mal ein oder zwei Beispiele angeben, damit ich es noch besser verstehen kann?
17:30<sunset<19:30 heißt: trigger zu sunset, aber nicht früher wie 17:30 und spätestens um 19:30
In fhem haben wir auch upper und lower boundaries: http://fhem.de/commandref.html#SUNRISE_EL
Das geht dann so:
{sunset(<type>,<offset in sec>,<min>,<max>)}
type ist ein bisschen speziell, sowas wie Normal Null -> ;-) Kann "REAL", "CIVIL", "NAUTIC", "ASTRONOMIC" sein.
OK, dann macht es auch für Euch sinn, diese Parameter mit über das Widget abzubilden. Ihr könnt die dann auch nutzen.
klingt gut!
Dann muß ich mal nachdenken, wie das am besten in die Architektur passt.
Noch eine Frage: kommt das häufig vor oder ist das eher eine Ausnahme es so genau zu nutzen ?
Wer kann das sagen? Mein Ziel ist es, die Freiheitsgrade in fhem über ein elegantes Frontend in SV den Nutzern einfach benutzbar wieder anzubieten. (-> eher Ausnahme als Regel, aber für die, die die Ausnahme wollen, eher Pflicht als Kür!) Mir liegen Nachfragen vor, wie man das dann, wenn die Zeit stimmt, mit Regeln versehen kann
usw. Fhem hat dafür eine Bedingung, die man entsprechend setzen kann:
http://fhem.de/commandref.html#WeekdayTimer (siehe Condition!)
Das mit den Regeln ist dort möglich, wo ich das in der rrule abbilden kann. Abhängigkeiten in Bezug auf Systemzustände gibt es auf smarthome Seite nur in der Logik. Mein Idee ist, neben den Standard Einträgen (wie gehabt, Ist-Zustand) einen geführten Assistenten zu bauen, der das Ergebnis einträgt.
Ist das dann doch Popup im Popup?
Nein, das geht ja nicht. Ich jetzt viel gewälzt, aber nur harte Aussagen von den Entwicklern des Frameworks gehört. Aber ich habe da ein paar Ideen dazu....
OK, ich bleibe neugierig!
Hallo Bernd,
ich hatte es befürchtet: es ist eine riesen Orgie wegen dem parsen der Daten im Widget.
Dennoch: Ich habe einmal einen Branch "feature" mit der v1.87 angelegt. Ich habe mal keine Beschriebung dabei, probiere und teste mal möglichst genau aus. Feedback welcome. Am geschicktesten startest Du das Widget mit designType = '1', damit Du auch die Zeile selbst editieren kannst. Die Wochentage sind nicht funktional.
Michel
Ok, ich schau es mi an!
Habe noch etwas aufgeräumt. Ist jetzt v2.1 im feature branch
OK, ich sehe jetzt im designtype 1 zwei Texteingabefelder. Was genau sollte ich testen? Sorry, ich blicke es noch nicht so ganz!
Habe eben den Helper entdeckt! Hatte irgendwie 2.0RC1 geladen anstatt R2.1 Test jetzt!
Sorry
Hab heute zuwenig Zeit. Irgendwie bin ich noch verwirrt, der zweite Eintrag hat ein merkwürdige Reihenfolge:
{"active":true,"list":[{"value":"On","time":"09:00<sunrise<21:00","rrule":"FREQ=WEEKLY;;BYDAY=MO,TU,WE,TH,FR,SA","active":true},{"rrule":"FREQ=WEEKLY;;BYDAY=MO,TU,WE,TH,FR,SA","time":"21:00","value":"Off","active":true}]}
Erste Tests ergeben noch einige Unstimmigleiten: In UZSU-Dialog: Neue UZSU, neue Zeile -> (?) ohne Funktion Neue UZSU, neue Zeile, manuelle Zeit und Tage, speichern -> (?) geht!
Auf mobile ist keine Screen-Rotation mehr möglich, weil das Format sich nicht mehr anpasst!
Im Assistenten: Wenn der input nur eine Zeit ist und man umschaltet auf Sunrise, dann passieren mehrere Dinge:
Nach einigem Klicken völlig zerstörte Struktur der Daten:
Ich komme im Moment nur zur Symptomanalyse und kann Dir noch keine Code-Hinweise geben, mache ich aber gern später!
Insgesamt ist es sehr schwierig, sich ein umfassendes Layoutkonzept vorzustellen, das über alle diese Möglichkeiten verfügt, ohne den Benutzer völlig zu überfordern. Wir haben ja noch einige Dinge übrig bei den Wochentagen: "Auch an Feiertagen (ja/nein)", "Auch an Ferientagen(ja/nein), Zufallsschaltungen zwischen zwei Zeitpunkten, ...
Wie wäre es, wenn man die Navigation nicht durch den Wechsel zwischen mehreren Popups erledigt, sondern durch das Erweitern von Abschnitten? Standardanzeige ist dann die normale UZSU, aber wenn ich (V) drücke, erweitert sich der Abschnitt und die Profi-Funktionen kommen zum Vorschein, das fände ich etwas einfacher zu verstehen als das Springen zwischen Popups. Was meinst Du?
So etwa, was meinst Du?
Ereignis könnte dann auch noch "Zufall" sein...
Vielleicht sollten wir auch mal fragen, für welchen Markt wir das Ganze entwickeln. Wenn international, dann weiter mit englisch, wenn nicht, dann lieber alles auf deutsch?
Hallo Bernd,
danke für das Feedback. Mal meine Pukte dazu:
Zu den Drehungen: ist immer dei Balance alles auf einem Popup, aber dennoch klein.
Zu den Fehlermeldungen: auch hier abgleich in einem Feld Zeit (kann als Input = 'time') deklariert werden, wenn dann sunrise drinsteht geht es nicht. in der UZSU ist das ein einziges Feld.
Wenn Du dazu eine Idee hast -> welcome.
Die Komplexität hatte ich auch so erlebt. Du bestätigst das.
Ich werden jetzt einmal die Version 2 fertig machen (ohne die eben diskutierten Extensions), damit das Text Thema, die Listen usw. fix sind. Wenn Du da ebenfalls mein reinsehen kannst (vor allem wegen der Reihenfolge im Dict (das habe ich nicht verstanden). Danach dann mal mit dem "Expertenmodus" weiter in einer Zusatzzeile.
Verstehe ich Dich richtig: Version 2 ist ohne den Experten-Kram, aber wieder für alle verwendbar? Danach dann - als Vorbereitung auf Version 3 - den ganzen Eperten-Kram erarbeiten?
Dann nehme ich erstmal wieder die 2.0RC1 zum testen...
Ja, richtig verstanden. Die Version 2.0RC1 auf develop ist alles drin bis auf den experten Kram. Wenn Du was testen willst, dann diese. Experten Kram ist auf feature branch v2.1
2.0RC1 läuft bei mir wie erwartet.
Gut, danke. Wenn Dir noch etwas auffällt in Bezug auf die gespeicherten daten usw. bitte Feedback.
Ein fällt mir auf: früher passte sich die Breite des Popups beim Drehen des Bildschirms auf dem iPhone an und es sah auch auf dem Handy super aus. Das ist jetzt weg, die Breite bleibt beim Drehen von Portrait zu Landscape gleicht und es ist auch im Querformat kaum bedienbar! Kannst Du danach noch mal schauen?
Ja, schaue ich mir nochmal an. Spontan aber keine Änderung gemacht, aber der Teufel steck da im Detail.
Also, ich kann Dir nicht sagen, warum, aber jetzt geht die Erweiterung beim Formatwechsel wieder tadellos... Komisch! Aber egal-Hauptsache geht!
Hallo Bernd,
ich habe das ganze im Feature Branch jetzt mal auf Experte umgestellt. Schau Dir das mal an. Danke !
Sieht sehr schön aus! Toll gemacht! Habe mal zu testen begonnen:
führt zu
{"active":true,"list":[{"value":"On","time":"20:00","rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR","active":true},{"rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR","time":"21:00","value":"Off","active":true}]}
Also alles richtig!
führt zu
{"active":true,"list":[{"value":"On","time":"20:00","rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR","active":true},{"rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR","time":"21:00","value":"Off","active":true}]}
Hier hätte ich statt der Zeiten den Text Sunrise/Sunset erwartet!
führt zu
{"active":true,"list":[{"rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR","time":"20:00","value":"On","active":true},{"value":"Off","time":"21:00","rrule":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR","active":true}]}
Mache ich was falsch?
Habe mir grade mal den Code angesehen, kann es sein, das die function uzsuSaveTable noch gar nicht die Elemente zusammensetzt?
Wenn ich das Spiel mit createexpert und delexpert und collapsetimestring richtig deute, dann fällt mir auf, dass es evtl. zu kompliziert ist, die Expert html-Zeile dynamisch zu erzeugen und dynamisch zu vernichten und das Ergebnis in einem String zwischenzuspeichern.
Wäre es nicht einfacher möglich, die Zeilen immer doppelt anzulegen (std und expert) aber die Zeile Exp zunächst als hidden zu formatieren (per CSS zum Beispiel http://www.w3schools.com/css/css_display_visibility.asp) und dann per Expert Button nur per CSS Klasse auf show zu setzen? Dann könnte die ganz normale Routine durch die Inhalte loopen und die ganz normalen Dinge damit tun ohne dass man erst collapsetime parsen, Zeile erzeugen, ändern, parsen collapsen und vernichten muss.
Was meinst Du?
Hallo Bernd,
Gute Idee mit dem hidden. Anfangs wollte ich nur eine Zeile gleichzeitig zulassen, und da ich schon diese Lösung hatte, dann einfach wiederverwendet. Ich probiere es mal aus. Das mit dem abspeichern muss ich mir noch anschauen, war erst mal nicht der Focus.
Michel
Du verwendest Chrome als Browser, richtig?
Ja, Chrome und IE und mobile Safari.
"Das mit dem Abspeichern" - meinst Du damit, den Sunrise String zu bilden? Oder was anderes? Ich wollte nur vorschlagen, nichts in collapsetimestring zwischenzuspeichern und dann nochmal umzuwandeln...
Eins habe ich noch für usability: was hältst Du von +/- minutes an Stelle von Offset? Das versteht dann sicher jeder und macht das Layout kompakter, oder?
Ja, der Vorschlag ist gut, machen wir so.
Ich habe noch was gefunden: solange das Event- selectmenu auf Time steht, könnte man die input fields auf disabled stellen, dann kommt keiner auf die Idee, ein Offset zum Event Time zu erfassen oder eine latest Zeit dazu... http://wiki.selfhtml.org/wiki/HTML/Formulare/ausgrauen
Viele haben nach der Möglichkeit gefragt, die Zeit relativ zum Sonnenaufgang oder -untergang zu formulieren.
Ich könnte mir vorstellen, ein select vor time zu erstellen, das --, SA, SU enthält. Das wäre dann so zu verstehen:
SA 01:00 ist eine Stunde nach Sonnenaufgang SU 00:30 ist eine Stunde nach Sonnenuntergang -- 21:00 ist um 21:00 Uhr
Relativ VOR SA und SU ist ohne negative Zeiten aber nicht möglich.
Könnte man wiederum mit --, SA+, SA- SU+, SU- adressieren.
Hast Du dazu schon was im Kopf?