Widget für weekprofile

Begonnen von Thorsten Pferdekaemper, 03 März 2016, 22:28:58

Vorheriges Thema - Nächstes Thema

Standarduser

Ich habe mal extra eine HTML angefertigt. Mit genau diesem Inhalt kann ich bei mir den Fehler reproduzieren.
Und weil Du schon ein paar mal nach dem Zustand der Daten im eigentlichen Weekprofile gefragt hast, nochmal ein Screenshot anbei.

Sonstige Fakten:
-FHEM 5.8 im neusten Update-Stand
-läuft auf Raspberry Pi2
-kein zusätzlicher Webserver
-keine relevanten Browser-Plugins
-Betriebssysteme macOS und Windows 10
-Browser Safari (macOS), Firefox (macOS + Win10), Chrome (macOS + Win10)

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="widget_base_width" content="74">
<meta name="widget_base_height" content="71">
<meta name="gridster_disable" content="1">
<meta name='gridster_resize' content='0'>

<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />

<!-- <meta name="longpoll" content="websocket"> --><!-- 1=longpoll;0=shortpoll every 30sec -->
<meta name="debug" content="6"> <!-- verbose level 1-6 = output to console;0 = not output -->
<meta http-equiv="Cache-Control" content="no-store" />

<link rel="stylesheet" href="styles_common.css" />
<link rel="stylesheet" href="styles_colors-ui.css" />
<!--  <link rel="stylesheet" href="css/fhem-green-ui.css" /> -->

<!-- altes jQuery für Weekprofile-Widget -->
<script src="../pgm2/jquery.min.js" defer></script>
<script src="js/fhem-tablet-ui.js" defer></script>

<title>FHEM-Tablet-UI</title>
</head>
<body>
<div class="gridster">
<ul>
<!-- Weekprofile -->
<li data-row="5" data-col="3" data-sizex="5" data-sizey="2">
<div id="weekprofile_ftui"
data-type="weekprofile"
data-device="DG.wz.HZ.Heizungsventil.weekprofile"
data-profile="master"
data-width="500"
data-height="500"
data-theme="dark"
data-title="Heizung Wohnzimmer | Zeitprogramm"
>
<div data-type="push" class="" data-icon="oa-edit_settings"
data-background-icon="fa-square-o"
data-on-color="#505050" data-on-background-color="#505050">
</div>
</div>
</li>
</ul>
</div>
</body>
</html>

klausw

Der Devicename darf derzeit keine Punkte enthalten, dann funktioniert es auch.
K.A. warum, dazu kenne ich mich noch zu wenig mit Java aus.
Vermutlich muss der Punkt irgendwie Maskiert werden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

schmimat

Vielen Dank für die Hilfe.

Ich hatte auch Punkte im Device Namen.

Ohne funktioniert es wie gewollt.

mfG Matthias


Standarduser

Tatsächlich, ohne Punkte funktioniert das Widget wie es soll.
Fenster öffnen sich nur einmal, hinzufügen und löschen klappt problemlos.
Oben wird jetzt auch der Close-Button nicht mehr angezeigt.

Vielen Dank für diesen Hinweis.

klausw

Mir könnte jetzt jemand helfen und erklären weswegen das so ist ;)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Standarduser

Ich habe mal versucht, das zu debuggen.
Besonders weit bin ich dabei zwar nicht bekommen, habe aber herausgefunden, dass einfaches escapen der Punkte im HTML-Code keinerlei Auswirkungen hat. Egal ob  DG.wz.HZ.Heizungsventil.weekprofile oder DG\.wz\.HZ\.Heizungsventil\.weekprofile - Daten von FHEM werden scheinbar korrekt eingelesen.
Ich hatte eigentlich versucht, den Fehler am "Fensteraufbau" zu finden, aber so richtig klar ist mir nicht geworden, wie das funktionieren soll.

klausw

#81
Zitat von: Standarduser am 17 März 2017, 08:45:59
Besonders weit bin ich dabei zwar nicht bekommen, habe aber herausgefunden, dass einfaches escapen der Punkte im HTML-Code keinerlei Auswirkungen hat. Egal ob  DG.wz.HZ.Heizungsventil.weekprofile oder DG\.wz\.HZ\.Heizungsventil\.weekprofile - Daten von FHEM werden scheinbar korrekt eingelesen.

Das einlesen funktioniert, sonst würde es eine Fehlermeldung geben.
Allerdings ist mir aufgefallen, das bei einem Weekprofile mit mehreren Profilen immer nur die Einstellungen des Profils angezeigt werden, das als erstes angeklickt wurde. Derzeit wird nach DefineName unterschieden. Das muss auch noch aufgebohrt werden.

Das mit dem escapen muss an anderer Stelle erfolgen.
Ich habe mir das im wdtimer angeschaut. Da ist diese Problem bereits behoben.
Anbei eine Version die auch mit Punkten im Namen umgehen kann.

Bitte testen.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

amenomade

Hi

Danke klaus für deine Antwort auf meine vorherige Frage. Nein, das Problem mit "Geist-"Fenster hatte ich nicht.... aber ich hatte auch keinen Punkt im Devicename.  8)


Gruß
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

klausw

#83
Anbei eine neue Version
Es können jetzt mehrere Profile pro Device genutzt werden.
In vorheriger Version konnten keine Zeiten hinzugefügt werden -> gefixed

CSS Datei in Post 67 -> gelöscht

Es funktioniert auch mit der aktuellen jquery Lib. Dazu wird jquery-migrate von der jquery Homepage benötigt.
Einbindung wie folgt:

<script src="/lib/jquery.min.js" defer></script>
<script src="/lib/jquery-migrate-3.0.0.js" defer></script>


Anhang gelöscht
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

amenomade

#84
Wahrscheinlich besser mit
<script src="lib/jquery.min.js" defer></script>
<script src="lib/jquery-migrate-3.0.0.js" defer></script>


Aber geht so bei mir auch nicht. Ich habe ein weekprofile"wpOma" mit 3 Profile "Kueche", "WohnzimmerOben" und "WohnzimmerUnten" drin.
In tablet-ui:
<td><div style="position:absolute; right:0; bottom:33%;"
    data-type="weekprofile"
            data-device="wpOma"
            data-profile="Kueche"
            data-style="round"
            data-theme="dark"
            data-title="Heizung Kueche">
            <div data-type="symbol" class="small readonly" data-icon="oa-edit_settings"
                data-background-icon="fa-square-o"
                data-on-color="#273D5C" data-on-background-color="rgba(0,0,0,0)">
            </div>
        <div data-type="label">Kue.</div>
</div></td>
<td><div style="position:absolute; left:0; bottom:33%;"
    data-type="weekprofile"
            data-device="wpOma"
            data-profile="WohnzimmerUnten"
            data-style="round"
            data-theme="dark"
            data-title="Heizung WohnzimmerEG">
            <div data-type="symbol" class="small readonly" data-icon="oa-edit_settings"
                data-background-icon="fa-square-o"
                data-on-color="#273D5C" data-on-background-color="rgba(0,0,0,0)">
            </div>
    <div data-type="label">wzEG</div>
</div></td>
<td><div style="position:absolute; left:33%; bottom:33%;"
    data-type="weekprofile"
            data-device="wpOma"
            data-profile="WohnzimmerOben"
            data-style="round"
            data-theme="dark"
            data-title="Heizung WohnzimmerOG">
            <div data-type="symbol" class="small readonly" data-icon="oa-edit_settings"
                data-background-icon="fa-square-o"
                data-on-color="#273D5C" data-on-background-color="rgba(0,0,0,0)">
            </div>
    <div data-type="label">wzOG</div>
</div></td>


Hier die cfg:
__version__=1.1
entry={"NAME":"default","DATA":{"Sun":{"time":["24:00"],"temp":["18.0"]},"Mon":{"time":["24:00"],"temp":["18.0"]},"Sat":{"time":["24:00"],"temp":["18.0"]},"Wed":{"temp":["18.0"],"time":["24:00"]},"Thu":{"temp":["18.0"],"time":["24:00"]},"Tue":{"temp":["18.0"],"time":["24:00"]},"Fri":{"temp":["18.0"],"time":["24:00"]}},"TOPIC":"default"}
entry={"TOPIC":"default","NAME":"Kueche","DATA":{"Fri":{"temp":["18.0"],"time":["24:00"]},"Wed":{"time":["24:00"],"temp":["18.0"]},"Thu":{"time":["24:00"],"temp":["18.0"]},"Tue":{"time":["24:00"],"temp":["18.0"]},"Sat":{"temp":["18.0"],"time":["24:00"]},"Sun":{"temp":["18.0"],"time":["24:00"]},"Mon":{"time":["08:00","23:00","24:00"],"temp":["18.0","21.0","18.0"]}},"REF":null}
entry={"NAME":"WohnzimmerUnten","DATA":{"Tue":{"time":["08:00","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Wed":{"time":["08:00","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Thu":{"time":["08:00","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Fri":{"temp":["18.0","21.0","18.0"],"time":["08:00","23:00","24:00"]},"Sun":{"temp":["18.0","21.0","18.0"],"time":["08:00","23:00","24:00"]},"Sat":{"temp":["18.0","21.0","18.0"],"time":["08:00","23:00","24:00"]},"Mon":{"temp":["18.0","21.0","18.0"],"time":["08:00","23:00","24:00"]}},"REF":null,"TOPIC":"default"}
entry={"TOPIC":"default","REF":null,"DATA":{"Tue":{"time":["08:01","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Thu":{"time":["08:01","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Wed":{"time":["08:01","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Fri":{"time":["08:01","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Sat":{"time":["08:01","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Sun":{"time":["08:01","23:00","24:00"],"temp":["18.0","21.0","18.0"]},"Mon":{"temp":["18.0","21.0","18.0"],"time":["08:01","23:00","24:00"]}},"NAME":"WohnzimmerOben"}


Egal welchen Knopf ich drucke. Ich kriege immer nur den wzOG gezeigt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Weitere Tests:

Ich kriege immer gezeigt denjenigen, den ich zuerst nach Reload der Seite angeklickt habe.

Reload
    Klick Kueche => Kueche gezeigt
    Klick WzOG => Kueche gezeigt
    Klick WzEG => Kueche gezeigt
Reload
    Klick WzEG => WzEG gezeigt
    Klick Kueche => WzEG gezeigt
    Klick WzOG => WzEG gezeigt
Reload
    Klick WzOG => WzOG gezeigt
    Klick Kueche => WzOG gezeigt


Ist es ein Problem mit meinem html?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

klausw

Ich habe jetzt keine Zeit zum prüfen.
Aber hast du mal den Browserchache geleert?
Oder einfach ein Inkognitofenster öffnen und da probieren
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

amenomade

Jupp. Incognito Fenster hilft nicht.
Auch jeden Knopf im eigenen gridster zu packen hilft nicht.
Auch wenn ich jedem Element einen Name "id=" vergeben, geht es nicht.

Kein Thema wenn du die Zeit nicht hast! Jeder hat seine eigene Aktivitäten  ;) Ich teste mal weiter.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

#88
Na dann... wie immer, wenn ich ein bisschen selbst suche, finde ich einen Fehler... von mir.
Ein debug des .js mittels F12 hat festgestellt, dass... immer die alte Version vom weekprofile.js geladen wurde. Pfff!

Es ist wahrscheinlich bei der Kopie im js Verzeichnis passiert. Ich habe offensichtlich immer wieder die alte Version im fhem/www/tablet/js kopiert! Und das 2x oder 3x heute Nacht, und noch 2x heute Morgen. :'(

Es funktioniert wunderbar, danke  8)

Gruß
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

klausw

Ein Fehler wird nicht richtig wenn man ihn wiederholt [emoji16].
Jetzt muss ich nur noch unvollständige Datensätze abfangen.
Setstate hat am Updatemechanismus was geändert, mal sehen wie ich das integrieren kann.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280