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

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

Vorheriges Thema - Nächstes Thema

philb

Hallo,

Plots kann man mit einem kleinen Workaround anzeigen lassen, indem man mit dem Chart Frontend Plots erstellt und diese dann einfach in eine div Box einbettet.

Chart Frontend installieren und starten:
http://www.fhemwiki.de/wiki/Neues_Charting_Frontend

-> Create New Chart
-> Auf den erstellten Chart mit rechter Maustaste klicken
-> Integrate in fhem

Aus der Box lediglich den http link kopieren und mit folgendem Code auf der smartVISU Seite einbetten. Dabei den beispielhaften Link im folgenden Code durch den eigenen ersetzen:

<div class="block">
<iframe src="http://192.168.178.62:8083/fhem/frontend/index.html?showchart=80692925" width="439" height="253">Iframes disabled</iframe>
</div>


Funktioniert bei mir soweit...

Gruß Phil

marvin78

Dazu benötigt man kein Charting Frontend. DAS funktioniert ganz ähnlich auch mit dei SVG Plots aus FHEMWEB. Ich denke aber, das kann nur ein Workaround für ganz ungeduldige sein.

HCS

Zitat von: marvin78 am 24 März 2015, 16:15:37
Ich denke aber, das kann nur ein Workaround für ganz ungeduldige sein.
So sehe ich das auch.

bumbumb

hallo,
kann jemand mal genau beschreiben wie man die Aubfallkalender_2015.ics. Datei für den Calender einbindet. Wäre schön wenn ihr helfen könnt.
Gruß
bumbumb

bgewehr

Ich habe dazu den iCal-sabreDAV Treiber aus dem KNX Userforum verwendet und bin zufrieden.
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

bumbumb

hallo
kannst du es mal genauer beschreiben?? Vielen Dank.
bumbumb

bgewehr

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

redlav


bumbumb

Hallo danke für die Infos.

kann jemand mal den kompletten Import beschreiben.
{#import.......}
wo wird der pfad zur ics Datei eingestellt? Bitte sage mir mal genau was gemacht werden muss. vielen dank bumbumb

redlav

Hallo,

steht im Prinzip hier:http://forum.fhem.de/index.php/topic,30909.msg246473.html#msg246473 und in den anderen beiden Links beschrieben.
Ich muss mir mal einen Wikiaccount beantragen und das mal alles da zusammen fassen.

Gruß Norbert

bgewehr

#2065
Wer Lust hat, die feature-Version 2.85 der UZSU auszuprobieren, braucht eine erweiterte 99_fronthemUtils.pm.

Die Funktion UZSU_execute muss geändert werden:


###############################################################################
#
# Umsetzen der UZSU-Settings für ein device
#
###############################################################################
sub UZSU_execute($$)
{
  my ($device, $uzsu) = @_;
 
  $uzsu = decode_json($uzsu);
  fhem('delete wdt_'.$device.'_uzsu');
  if ($uzsu->{active}){
  my $weekdays_part = " ";
  for(my $i=0; $i < @{$uzsu->{list}}; $i++) {
      my $weekdays = $uzsu->{list}[$i]->{rrule};
      $weekdays = substr($weekdays,18,50); 
      if (($uzsu->{list}[$i]->{active})) {
      if ($uzsu->{list}[$i]->{event} eq 'time'){
          $weekdays_part = $weekdays_part.' '.$weekdays.'|'.$uzsu->{list}[$i]->{time}.'|'.$uzsu->{list}[$i]->{value};
      }
        else {
          $weekdays_part = $weekdays_part.' '.$weekdays.'|{'.$uzsu->{list}[$i]->{event}.'_abs("REAL",'.$uzsu->{list}[$i]->{timeOffset} * 60 .',"'.$uzsu->{list}[$i]->{timeMin}.'","'.$uzsu->{list}[$i]->{timeMax}.'")}|'.$uzsu->{list}[$i]->{value};
        }         
      }
  }
  fhem('define wdt_'.$device.'_uzsu'.' WeekdayTimer '.$device.' en '.$weekdays_part);
  fhem('attr wdt_'.$device.'_uzsu room UZSU');
  }   
}


Nun kann man im sog. Expert-Mode die Zeiten auch in Abhängigkeit von Sunrise und Sunset definieren!

(reload 99_fronthemUtils.pm in fhem nach der Änderung der Datei nicht vergessen!!)
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

Hans Franz

#2066
Hallo Bernd,
Sehr geil. Danke.

Ich habe allerdings zuerst keine earliest- und latest-Werte angegeben. Dann wird um 00:00 geschaltet(oder ich habe etwas falsch gemacht).

Kleine Ergänzung in UZSU_execute:
if ($uzsu->{list}[$i]->{timeMin} ne '' and $uzsu->{list}[$i]->{timeMax} ne '') {
                $weekdays_part = $weekdays_part.' '.$weekdays.'|{'.$uzsu->{list}[$i]->{event}.'_abs("REAL",'.$uzsu->{list}[$i]->{timeOffset} * 60 .',"'.$uzsu->{list}[$i]->{timeMin}.'","'.$uzsu->{list}[$i]->{timeMax}.'")}|'.$uzsu->{list}[$i]->{value};
}
else {
        $weekdays_part = $weekdays_part.' '.$weekdays.'|{'.$uzsu->{list}[$i]->{event}.'_abs()}|'.$uzsu->{list}[$i]->{value};
}

Jetzt klappts auch mit leeren Werten.

Gruß
Hans

Edit:
Mist. timeOffset vergessen. Ich bin schon zu müde.
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

bgewehr

Hast Recht, da muss ich nochmal ins Detail gehen! Danke!
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

dev0

Zitat von: Rockojfonzo am 23 März 2015, 17:15:23
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).

Hier meine Erfahrung zu fronthem/smartvisu und remote access:

Vom Mobile/Tablet funktioniert fronthem/smartvisu über eine IPsec/SSLVPN Verbindung gut. Allerdings trat in meinem Setup das Problem auf, dass eine Firewall (Cisco ASA) den Websocket Traffic blokiert hat, da keine SYN Pakete geschickt wurden, die zum Aufbau neuer TCP Connections notwendig sind. Der Traffic auf dem (ungewöhnlichen) Port 2121 wird wohl nicht als bereits geöffnete Websocket-Verbindung erkannt. Abhilfe schaffte ein tcp-state-bypass für Port 2121. Config siehe unten.

Möchte man von einem x-beliebigen Client, ohne VPN, über das Internet auf die smartvisu Seiten zugreifen, dann tritt das bekannte Problem auf, dass fronthem die IP des Clients nicht kennt und ggf. eine Firewall sogar den den Zugriff auf Port 2121 verweigert. Das kann man durch einen reverse Proxy elegant umgehen. Hier bietet sich z.B. Apache v2.4.5+ mit den Modulen mod_proxy und mod_proxy_wstunnel an. Dabei ist dann zu beachten, dass man in der smartvisu Konfiguration die (von aussen zu erreichende) IP Adresse des rProxies als I/O Connection IP und Port 80 angibt. Zum Schluss noch ein fronthemdevice mit der Adresse des Proxies anlegen. Funktioniert bei mir problemlos. Config ebenfalls unten.

So weit so gut. Was noch nicht sauber funktioniert sind zwei Dinge:

- TLS/SSL:
IE11 und FF36 zeigen die smartvisu https Seiten an, bekommen aber keine Websocket Verbindung. Safari funktioniert dagegen unter Mac OS X und IOS problemlos. Dieses Problem hat aber nichts mit dem remote access über einen Proxy zu tun, denn gleiches Verhalten zeigt mein smartvisu auch beim direkten Zugriff über SSL/TLS.

- Basic Auth:
Funktioniert leider auch nur bedingt. Man kann nur den web traffic authentifizieren und nicht den Websocket traffic, was aber nicht wirklich sicher ist. Keiner meiner getestet Browser hat die Authentifizierung der Webseiten an den Websocket Traffic durchgereicht. Einen Workaround gibt es zumindest für den Firefox: man kann mit der Kombination username:password@host als I/O connection address in der config.ini auch die Credentials übergeben. Allerdings funktioniert mit dem FF die verschlüsselte Verbindung über https nicht :-(

Da ich mich nie näher mit Websockets beschäftigt habe, weiss ich nicht ob diese beiden Probleme generell in Verbindung mit Websockets auftreten, es an smartvisu bzw. io_fhem.js liegt oder ich den Wald vor lauter Bäumen nicht sehe... Vielleicht kann einer der Entwicker etwas dazu sagen?

Btw: Wenn ich es im Wireshark Trace richtig gesehen habe, dann werden die Websockets nur mit http://x.x.x.x:2121/ aufgerufen. Sinnvoll wäre es, wenn dort noch ein eindeutiger Path angegeben wäre, wie zb. http://x.x.x.x:2121/ws/io_fhem/. Dann könnte man den Traffic ggf. besser filtern, wenn es nötig ist.

/Uli

smartvisu config.ini

[clients]
x.x.x.x = 'rProxy'
[client:rProxy]
driver_address = 'x.x.x.x'
driver_realtime = true
driver_port = '80'
# x.x.x.x ist die IP des reverse Proxy


apache conf.d/rproxy.cfg

ProxyPass /smartvisu http://y.y.y.y/smartvisu
ProxyPassReverse /smartvisu http://y.y.y.y/smartvisu
ProxyPass /fhem http://z.z.z.z:8083/fhem
ProxyPassReverse /fhem http://z.z.z.z:8083/fhem
ProxyPass / ws://z.z.z.z:2121/
ProxyPassReverse / ws://z.z.z.z:2121/
# y.y.y.y = IP smartvisu webserver
# z.z.z.z = IP FHEM host


cisco tcp-state-bypass

access-list state-bypass extended permit tcp any host [your-dest-ip] eq 2121
!
class-map class-state-bypass
match access-list state-bypass
!
policy-map global-policy
class class-state-bypass
  set connection advanced-options tcp-state-bypass
!

herrmannj

Hi Uli,

:) - vielen Dank..

Zur Nachahmung kann ich das jedoch nicht empfehlen und ich möchte dringend darauf hinweisen das es höchst gefährlich ist das offen ins Netz zu stellen. Ernsthaft ! Nein, No, Njet, Nada ...

aktuell: Extern == VPN !!! (eine ASA ist ja auch nicht ganz ungeeignet ;) )

Ansonsten, fachlich: technisch hast Du ja einige Punkte "kennengelernt" (da fehlt noch ein out of band ssl handshake) - was in Summe auch der Grund ist warum das (stand heute) in fronthem und smartVisu nicht implementiert ist.

Wenn ich vorschlagen darf: auf den Reverse Proxy würde ich verzichten - Du kannst ssl ja direkt über den (sv) webserver bedienen. Dort lässt sich die Validierung der Zertifikate auch mit wenigen Zeilen code (index.php) implementieren, die server vars liefern ja alles wenn die entsprechende root autority (privat oder public) händisch eingerichtet ist.

Die Prüfung der certs hab ich im design in fronthem (im Keim) angelegt, cert und root müssten halt dort auch händisch hinterlegt werden und der wss braucht einen eigenen fork auf eigenem port. Ich habe den ws schon deutlichem Blick auf einen zukünftig sicheren Zugriff gestaltet. (code injection oder dos sollten ausgeschossen sein) - theoretisch zumindest. Bevor da aber niemand anderes nochmal einen code review durchgeführt hat (und ssl steht) ist mMn alles andere als vpn Harakiri (wenn produktiv). Trotzdem sind Experiment richtig, speziell auch um Erfahrung für die Umsetzung zu sammeln. Auf das IE und FF Verhalten bzgl https + ws kann ich mir spontan keinen Reim machen.

An Rande noch: in Deiner cfg teilen sich simultane, externe clients ein fronthemDevice. Bei simultanem Zugriff führt das sofort zu Fehlern weil sich die device gegenseitig die Monitor List überschrieben.

vg
jörg