erste beta - fronthem, smartVISU (closed, Bitte die Anschlussthreads benutzen)

Begonnen von herrmannj, 23 Dezember 2014, 22:36:44

Vorheriges Thema - Nächstes Thema

marvin78

Zitat von: HCS am 22 März 2015, 20:44:37
@marvin78: Super.
Kannst Du noch forschen, wo die seltsame widget.min.js herstammt?
Die macht mich etwas nervös.  :)


Ich würde dich (und auch mich selbst) gerne beruhigen aber ich weiß nicht sicher, wie das passiert ist. Ich habe das SmartVisu ursprünglich von smartvisu.de. Am Datum war zu sehen, dass ich die widget.min.js nie geändert habe. Ich hatte zwischendurch mal eine widget.js mit den tiefen delegates, habe aber aktuell wieder das Original in Verwendung. Seltsam.

HCS

Zitat von: bgewehr am 22 März 2015, 20:12:35
Ich habe noch einen Fehler 'Cannot read property 'attr' of undefined in Zeile 588 des Treibers beim Laden der Seite. ne Idee, wie ich weiter suchen soll?
Das ist kein Problem in dem Sinne. Der Treiber versucht das schon mal zu einem Zeitpunkt, an dem $.mobile.activePage tatsächlich manchmal noch undefined ist.
Kurz danach ruft SV im Treiber aber ein run auf, und spätestens da funktioniert es.
Warum das nur auf manchen pages vom Timing so abläuft ist mir zwar unklar, aber da ist eh nix zu wollen.
Ich bin mir sehr sicher, dass diese Fehlermeldung keinen Einfluss auf die Funktion der geladenen page hat, sie ist einfach nur unschön.
Ich fange das ab. Also einfach vorerst mal ignorieren.

cruser1800

#2027
@Bgewehr

Ich habe heute mal die neue Logik der Widget von dir eingebaut. Da ist mir aufgefallen, dass in der widget_homematic.html zwei Fehler sind

{% macro hmtctimer(id, txt, gad_prog, gad_p1_sat, gad_p1_sun, gad_p1_mon, gad_p1_tue, gad_p1_wed, gad_p1_thu, gad_p1_fri, gad_init, gad_save, gad_restore) %}
{% import "basic.html" as basic %}
<div id="{{ uid(page, id) }}" style="font-size:0.8em">
<table width="100%"  style="text-align:left">
<tr><td width="80px">Programm:</td>
<td style="float:left width:50%">{% if gad_prog %}{{ basic.selectmenu(id~'prog', gad_prog, '', 'prog1', 'prog2', 'prog3') }}{% endif %}</td>
<td style="width:50% float:right">
<span data-role="controlgroup" data-type="horizontal" style="float:right;">
{% if gad_init %}{{ basic.button(id~'init', gad_init, ' init ', '' ) }}{% endif %}
{% if gad_save %}{{ basic.button(id~'save', gad_save, ' save ', '') }}{% endif %}
{% if gad_restore %}{{ basic.button(id~'restore', gad_restore, 'restore', '') }}{% endif %}
</span>
</td></tr></table>
{{ basic.textinput(id~'p1_mon', gad_p1_mon, 'Montag:') }}
{{ basic.textinput(id~'p1_tue', gad_p1_tue, 'Dienstag:') }}
{{ basic.textinput(id~'p1_wed', gad_p1_wed, 'Mittwoch:') }}
{{ basic.textinput(id~'p1_thu', gad_p1_thu, 'Donnerstag:') }}
{{ basic.textinput(id~'p1_fri', gad_p1_fri, 'Freitag:') }}
{{ basic.textinput(id~'p1_sat', gad_p1_sat, 'Samstag:') }}
{{ basic.textinput(id~'p1_sun', gad_p1_sun, 'Sonntag:') }}
</div>
{% endmacro %}


textinput und selectmenu sind nicht in der basic.html sondern bei dir extra Widget. Hier solltes du einen Hinweis zur Einbindung der zwei Widget geben und den code entsprechend anpassen.

Für den Timecounter habe ich eine Lösung für die Anzeige der Stunden.

{% macro timecounter(id, gad, mode) %}

<script type="text/javascript">
function ZeitAnzeigen (objectID, mode, value) {
var absSekunden = value
if (absSekunden == 'NaN') {absSekunden = 1};
var relSekunden = absSekunden % 60;
var absMinuten = Math.abs(Math.round((absSekunden - 30) / 60));
var relMinuten = absMinuten % 60;
var absStunden = Math.abs(Math.round((absMinuten - 30) / 60));
var anzSekunden = "" + ((relSekunden > 9) ? relSekunden : "0" + relSekunden);
var anzMinuten = "" + ((relMinuten > 9) ? relMinuten : "0" + relMinuten);
var anzStunden = "" + ((absStunden > 9) ? absStunden : "0" + absStunden);
return(anzStunden + ":" + anzMinuten + ":" + anzSekunden);
};
</script>
<span id="{{ uid(page, id) }}" data-widget="basic.timecounter" data-item="{{ gad }}" data="{{ mode }}">-:-:-</span>

{% endmacro %}


Gruß Lutz

bgewehr

@Lutz: Das schaue ich mir an!
@HCS: kann es sein, dass der Treiber sonstige Events von jQuery abfängt, so dass meine Wischgesten nicht mehr aktiviert werden? Das sind ja auch native Events des Frameworks.
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

HCS

Zitat von: bgewehr am 23 März 2015, 07:53:06
@HCS: kann es sein, dass der Treiber sonstige Events von jQuery abfängt, so dass meine Wischgesten nicht mehr aktiviert werden? Das sind ja auch native Events des Frameworks.
Eigentlich nicht. Es geht ja auch nur auf dem Phone nicht.
Bekommst Du den  "'Cannot read property 'attr' of undefined in Zeile 588" Fehler?
Wenn ja, laufen danach möglicherweise die jQuery  events nicht mehr.
Falls ja, kannst Du es so abfangen (Zeile 588 in io_fhem.js und nicht vergessen auch eine io_fhem.min.js draus zu machen):
// get all widgets at page
    if($.mobile.activePage) {
      $('[id^="' + $.mobile.activePage.attr('id') + '-"][data-item]').each(function (idx, e) {
        io.allGADs.push(this);
      });
    }

Rockojfonzo

Könnte bitte jemand einen Anstoß geben, wie man die tempLists bei einem HM-CC-RT-DN gad-mäßig verknotet?
Oder vielleicht einfach eine Beispiel-"fhserver....cfg" hier oder ins Wiki hochladen?
Ich stehe leider auf dem Schlauch, was z.B. die Funktion von den "init", "save" und "restore" Buttons von Bernds feinen Widgets betrifft.

Dank!
Tino
FHEM auf Shuttle XS 35V2 mit CUL und HM-LGW
9 x HM-CC-RT-DN; 2 x HM-LC-SW4-DR; 3 x HM-WDS30-OT2-SM; 3 x HM-SEC-SD; 1 x HM-LC-Bl1PBU-FM; 1 x HM-LC-SW1-PL2;1 x HM-LC-SW1-FM; 2 x HM-SEC-SC-2

bgewehr

Hey, Tino, das ist vielleicht eine blöde Sache mit diesen TempLists. Die HM-Geräte lassen zwar das Auslesen direkt zu auf die jeweiligen Readings, aber nicht einfach so die Änderung dieser Parameter, daher habe ich von dem FHEM-HMinfo device Gebrauch gemacht und wollte mit init den Initialzustand aus einer tempList Sicherung des Werkszustandes wiederherstellen, mit save eine eigene Konfig in eine andere Datei sichern und mit restore aus dieser wiederherstellen. Das Ganze funktioniert bei mir leider auch nicht, weil ich irgendwie zu blöd bin, das HMInfo device zu begreifen, ich bekomme da immer für mich unverständliche Fehlermeldungen.

Wir können vielleicht zusammen die Nuss knacken, wenn Du herausfindest, wie man mit den TempList- Funktionen des HMInfo device elegant TempListen lesen und schreiben kann, dann kann ich das sicher dem Widget beibringen...
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

karl0123

Das hier ist eine ernst gemeinte Frage und nicht despektierlich gemeint: Wie oft ändert ihr eure Templisten in den Devices? Ich mache das in der Regel 1 mal und eventuell noch einmal, falls ich gemerkt habe, dass ich das nicht optimal gemacht habe. Ich bin noch nie darauf gekommen, dass man so etwas seltenes in einem Frontend machen könnte. Das ist für mich ein Backend Ding. Da ich aber hier immer wieder lese (auch an vielen anderen Stellen), dass sich viele User eine bessere GUI für das Setzen der Listen wünschen, frage ich mich, ob es vielleicht doch Sinn hat. Also wie oft setzt ihr die Listen und warum macht ihr es so oft, dass es Sinn macht, das in einem Frontend zu machen?

HCS


herrmannj

Zitat von: karl0123 am 23 März 2015, 13:39:48
Das hier ist eine ernst gemeinte Frage und nicht despektierlich gemeint: Wie oft ändert ihr eure Templisten in den Devices? Ich mache das in der Regel 1 mal und eventuell noch einmal, falls ich gemerkt habe, dass ich das nicht optimal gemacht habe. Ich bin noch nie darauf gekommen, dass man so etwas seltenes in einem Frontend machen könnte. Das ist für mich ein Backend Ding. Da ich aber hier immer wieder lese (auch an vielen anderen Stellen), dass sich viele User eine bessere GUI für das Setzen der Listen wünschen, frage ich mich, ob es vielleicht doch Sinn hat. Also wie oft setzt ihr die Listen und warum macht ihr es so oft, dass es Sinn macht, das in einem Frontend zu machen?
Ist für mich auch so - aber der Bedarf ist eben doch sehr individuell. Und mei: ist doch schön das man es machen kann . also . vg jörg

karl0123

@HCS: Ich bin noch nicht dazu gekommen, sorry. Aber bei mir scheint es das gleiche Problem zu sein. Ich habe mir zwar die widget.min.js nicht im Detail anschauen können, aber wenn ich die widget.js verwende, dann ist alles gut. Da hätte ich auch mal selbst drauf kommen können  :-\ Danke und sorry.

Rockojfonzo

Hi Karl, im Grunde sehe und mache ich das genau wie Du.
Mein Begehr
in Richtung Herrn Gewehr (ich bin ein Dichter!) ;-)
kommt aktuell von einem Arbeitskollegen, der das irgendwie möchte. Ich frag ihn ma.
Aber auch ich wünschte mir schon ab und an eine benutzerfreundlichere Oberfläche: Wir haben zwei schon ganz schön erwachsene Töchter, die – unzüchtig! – nur noch unregelmäßig daheim sind, und dann immer wieder andere Aufsteh- und Weggeh-Zeiten haben. Die möchte ich eigentlich frühzeitig schon hinterlegen und stoße dabei mit "nur einer" controlParty an die Grenzen.
FHEM auf Shuttle XS 35V2 mit CUL und HM-LGW
9 x HM-CC-RT-DN; 2 x HM-LC-SW4-DR; 3 x HM-WDS30-OT2-SM; 3 x HM-SEC-SD; 1 x HM-LC-Bl1PBU-FM; 1 x HM-LC-SW1-PL2;1 x HM-LC-SW1-FM; 2 x HM-SEC-SC-2

HCS

Zitat von: karl0123 am 23 März 2015, 13:54:31
Ich habe mir zwar die widget.min.js nicht im Detail anschauen können, aber wenn ich die widget.js verwende, dann ist alles gut.
Ja, schau mal, oder schicke sie mir, dann schaue ich.
Evtl. kannst Du ja nachvollziehen, wo diese widget.min.js herstammt. Die sollte auf alle Fälle eliminiert werden.

Rockojfonzo

Hallo Bernd, mit HMInfo war ich auch noch nicht erfolgreich. Ich glaube, das wird nix.
Ich schaue mal, ob ich eine nette Klicki-Bunti-Oberfläche für controlParty und einzelne tempLists hinkriege...

Andere Frage: Ich möchte meiner neuen Liebe smartvisu natürlich auch von unterwegs frönen und dies gerne ohne VPN, also gerne HTTPS und BasicAuth (reicht für mein Sicherheitsempfinden).
Sehe ich das richtig, dass das mit smartvisu nicht so richtig geht, weil er für jede IP einen eigenen Client anlegt? Den Ansatz mit den Zertifikaten habe ich gesehen, aber ist bisher nur ein Ansatz, gell? Kann ich da vielleicht helfen?
FHEM auf Shuttle XS 35V2 mit CUL und HM-LGW
9 x HM-CC-RT-DN; 2 x HM-LC-SW4-DR; 3 x HM-WDS30-OT2-SM; 3 x HM-SEC-SD; 1 x HM-LC-Bl1PBU-FM; 1 x HM-LC-SW1-PL2;1 x HM-LC-SW1-FM; 2 x HM-SEC-SC-2

RockSteadyBeat

Hallo zusammen,

ich hab mal wieder ein "Problem".

Würde gern einen Sleep-Timer in Form eines Slider´s für iTunes einsetzen.
iTunes ist in Fhem bereits integriert mittels 33_iTunes.pm, einen Slider fhem-seitig gibt es auch bereits, diesen aktualisiere ich über ein notify:
define ntfy_iTunesSleep notify Timer_iTunes:.* {
my $timerwert1 = ReadingsVal("Timer_iTunes","state","on");;
my $itunes = ReadingsVal("iTunes_at_home","state","0");;
my $dummy = "Timer_iTunes";;

if (($timerwert1 gt "1") && ($itunes eq "play")) {
fhem ("set $dummy $timerwert1");;
fhem ("define Warten1 at +00:00:01 trigger $dummy ")}
elsif ("$timerwert1" gt "1") {
my $timerwert2 = $timerwert1 - 1;;
fhem ("set $dummy $timerwert2");;
fhem ("define Warten2 at +*00:00:01 trigger $dummy, delete Warten2")}
else {
fhem ("set iTunes_at_home pause");;
fhem ("set $dummy 0");;
fhem ("delete Warten2")}
}


Nun würde ich gerne diesen sich ständig aktualisierenden Slider in SmartVisu einfügen, hab ich nun über:
{{ basic.slider('iTunesTimer', 'itunesTimer', 0, 1800, 1, 'bottomup') }} gemacht,
das GAD erscheint auch, und wurde von mir wie folgt verknüpft:
"itunesTimer" : {
         "reading" : "level",
         "type" : "item",
         "converter" : "Direct",
         "device" : "Timer_iTunes",
         "set" : "state"

es besteht auch noch ein UserReading "level" um das Reading "state" vom cmd set "state" zu trennen.

Diese Config funktioniert nur leider nicht so wie sie es in Fhem macht.

Kann mich jemand auf den richtigen Weg bringen? (mit Zaunpfahl o.ä.  ;) )

MFG RockSteadyBeat
fhem on OSX
HMLAN,
CUL433