Neues Modul - Mobile Blitzer Anzeigen

Begonnen von bismosa, 27 März 2019, 20:14:16

Vorheriges Thema - Nächstes Thema

bismosa

Hallo,

danke für die Rückmeldungen! Ich habe den Code im Github nun aktualisiert. Also kann man die Änderungen nun auch mit einem Update bekommen.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Darkrabbit

Hallo zusammen,

erstmal danke für diese geniale Modul! Läuft super und hat tolle Einstellungsmöglichkeiten.

Ein Frage habe ich jedoch noch:

Hat jemand eine Idee wie ich die ja schon vorhandenen tolle OSM-Karte in FTUI eingebunden bekomme? Also Prinzip soll es genauso aussehen wie im FHEM selbst (entweder direkt auf einer Seite oder z.B. als Popup wenn man auf die "Anzahl" der Blitzer klickt).

Kann man nicht einfach irgendwie über das "get myBlitzer MapHTML" das Coding automatisiert einfügen, so dass dann die Karte dargestellt wird?

bismosa

Hallo!

Zitat von: Darkrabbit am 20 September 2020, 11:29:29
Hat jemand eine Idee wie ich die ja schon vorhandenen tolle OSM-Karte in FTUI eingebunden bekomme? Also Prinzip soll es genauso aussehen wie im FHEM selbst (entweder direkt auf einer Seite oder z.B. als Popup wenn man auf die "Anzahl" der Blitzer klickt).

Kann man nicht einfach irgendwie über das "get myBlitzer MapHTML" das Coding automatisiert einfügen, so dass dann die Karte dargestellt wird?
Ja. Genau dafür habe ich die get-Abfrage eingebaut. Mangels FTUI nutze ich dies jedoch selbst nicht.
Wenn ich mich recht erinnere, könnte dies über iFrame gehen. Oder geht es vielleicht über ein Label (Man braucht ja die Daten von FHEM...)
Schau mal hier: https://forum.fhem.de/index.php/topic,99070.msg925528.html#msg925528
somansch hat das wohl schon mal umgesetzt.

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Darkrabbit

Danke erstmal für die superschnelle Rückmeldung  :o

somansch hat das wohl in FTUI eingebaut, aber so wie ich es bisher auch habe. Zu einer Karte ist in dem Beitrag leider nichts zu finden.

Mit einem iFrame könnte das gehen, dass stimmt. Müsste ich mal ausprobieren.

Dachte halt nur dass es eine "saubere" Lösung gibt, wenn man ja schon das HTML-Coding aus Deinem Modul generiert bekommt. Mit einem Label hab ich es versucht, aber da passiert bei mir gar nichts in der Anzeige. Könnte es daran liegen, dass man in der GET Abfrage das gesamte Coding einer HTML-Seite erhält (inkl. HTML, HEAD, JS-Script etc.)? Denn über eine Label füge ich ja dann eine gesamte HTML-Seite in an die Stelle meines Labels innerhalb meiner vorhandenen HTML-Seite ein.
Das Einfügen vom Reading html für die "Textanzeige" funktioniert problemlos über ein Label, da hier nur ein paar HTML-Tags eingefügt werden (in meine vorhandenen HTML-Seite).
Aber ist auch nur eine Vermutung...  ???

Hat sonst schon mal irgendjemand die vorhandene OSM-Karte in FTUI eingebunden?

bismosa

Hallo!

Ich mache das in FHEM genau so. Dort wo die Karte eingefügt wird, wird dieser HTML-Code so eingefügt.
Ich weiß, das ist reiner Pfusch (wurde auch schon mal irgendwo diskutiert). Aber es war die einfachste Art, die Karte ohne weitere Dateien mit einzubinden.
Vielleicht einfach mal im FTUI  mit den Debugger-Tools des Browsers schauen, was da eingebunden wird. Dann kann man genauer sehen, was da passiert.

Alternativ sollte es gehen mit einem kleinen Script in FHEM das HTML als Datei zu speichern und diese dann als IFrame anzuzeigen.

Vielleicht findet sich hier ja jemand mit einer passenden Umsetzung  :)

Gruß
Bismosa
1x nanoCUL 433MHz (SlowRF Intertechno) für Fenstersensoren
1x nanoCUL 868Mhz für MAX (9x HT 1xWT)
1x ZigBee CUL
Weiteres: Squeezebox server, Kindle Display, ESP8266, Löterfahrung, ...

Darkrabbit

Stimmt, auch eine gute Idee, sofern man irgendwie mit einem Script das HTML in eine HTML-Datei speichern könnte. Aber da reichen meine Kenntnisse nicht aus für ein solches Script  ;)  :-\

Ich versuche mal morgen die Einbindung via iFrame (direkt von der FHEM-Seite)... und schaue auch mal was der Quelltext im Browser sagt, wenn ich es via Label einfüge...




curt

Alle zusammenbringen ...

Zitat von: bismosa am 20 September 2020, 11:40:32
Ja. Genau dafür habe ich die get-Abfrage eingebaut. Mangels FTUI nutze ich dies jedoch selbst nicht.

@eki - kann man da schon was sinnvolles draus machen?

@Darkrabbit @bismosa
Aus meiner Sicht wäre es das methodisch Sinnvollste, auf dem Widget map(s) aufzusetzen. Das arbeitet faktisch mit Overlays, ich habe beispielsweise dort die Verkehrslage meiner Region.

Da gäbe es nun zwei Wege, wie das Widget map an ein Overlay "Blitzer" kommt, bitte mal hier kurz die letzten Tage nachlesen: https://forum.fhem.de/index.php/topic,91781.msg1085906.html#msg1085906
RPI 4 - Jeelink HomeMatic Z-Wave

Darkrabbit

Hab nun erstmal die Variante mit dem Speichern des HTML-Codes für die OSM in einer HTML-Datei versucht, da müsste man dann nicht das Rad nochmal erfinden (wobei ich auch gerne eine andere Variante nehmen sofern jemand dies umsetzen kann  ;D) und würde einfach das ja eh schon vorhandene HTML-Coding aus dem Reading verwenden.
Nachdem ich alle Berechtigungsfehler beseitigt hatte funktioniert folgender Test schon einmal:

{system("sudo echo ".ReadingsVal("myBlitzer","count","99")." > /opt/fhem/www/tablet/blitzermap.html")}

Er schreibt dann erfolgreich die aktuelle Anzahl der Blitzer in die HTML-Datei.

Allerdings funktioniert es mit dem HTML-Code nicht...

{system("sudo echo ".ReadingsVal("myBlitzer","html","99")." > /opt/fhem/www/tablet/blitzermap.html")}

...oder dieses hier auch nicht...

{system("sudo echo ".{fhem ("get myBlitzer MapHTML")}." > /opt/fhem/www/tablet/blitzermap.html")}

Irgendwie scheint er ein Problem bei "mehrzeiligem" Input zu haben. Dann macht er einfach gar nichts und schreibt nichts die HTML-Datei... gibt auch keine Fehlermeldung.

Hat jemand eine Idee wie ich das Problem löse oder mache ich hier noch etwas falsch?

Darkrabbit

Hab jetzt mal folgenden Befehl verwendet:

{FileWrite("/opt/fhem/www/tablet/blitzermap.html", ReadingsVal("myBlitzer","html","99"))}

Damit klappt es sowohl mit dem Reading count als auch html.

Allerding noch nicht mit dem HTML der OSM.

Dafür habe ich Folgendes versucht:

{FileWrite("/opt/fhem/www/tablet/blitzermap.html", {fhem ("get myBlitzer MapHTML;;")})}

Dann schreibt er jedoch "HASH(0x4e9b090)" in die Datei  ???

Wenn ich in der Kommandozeile....
{fhem ("get myBlitzer MapHTML;;")}
...eingebe, kommt der gewünschte HTML-Code

Irgendein kleiner Fehler muss also noch da sein  :(

frank

vielleicht so:
{FileWrite("/opt/fhem/www/tablet/blitzermap.html", fhem("get myBlitzer MapHTML"))}

oder so:
{my $text = fhem("get myBlitzer MapHTML");; FileWrite("/opt/fhem/www/tablet/blitzermap.html", $text);;}
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Darkrabbit

Danke! Funktioniert grundsätzlich beides und er fügt es nun in die HTML-Datei ein.
Allerdings fügt er vor dem ermittelten HTML-Code nun noch ein <plaintext> ein  ???
Dadurch interpretiert der Browser dann den Code nicht sondern zeigt ihn nur an.

Hast Du noch eine Idee vorher das <plaintext> auf einmal kommt? Oder wie man das wieder rausbekommt?

Hier noch ein Beispiel:

<plaintext><!DOCTYPE html>
<html lang="de">
   <head>
      <meta charset="UTF-8">
      <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> -->
      <title>HowTo: Mini-Beispiel "Leaflet Karte mit Marker"</title>

Darkrabbit

#236
Hab es jetzt mit folgenden Befehlen hinbekommen (wenn auch etwas gefutscht):

{FileWrite("/opt/fhem/www/tablet/blitzermap.html", fhem("get myBlitzer MapHTML"))}

und anschließend

{system("sudo sed -i 's!<plaintext>!!' /opt/fhem/www/tablet/blitzermap.html")}

So wird das plainttext aus der HTML-Datei entfernt.

Hier das Notify das bei Aktualisierung der Blitzerdaten die HTML neu erzeugt:

define ErzeugeHTMLCodeFuerBlitzerMap notify myBlitzer {{FileWrite("/opt/fhem/www/tablet/blitzermap.html", fhem("get myBlitzer MapHTML"))};;{system("sudo sed -i 's!<plaintext>!!' /opt/fhem/www/tablet/blitzermap.html")}}

Die erzeugte HTML-Datei habe ich dann via iFrame im TabletUI eingebunden.

<li data-row="3" data-col="5" data-sizey="2" data-sizex="3">
                <header>BLITZER-KARTE</header>
                <div class="sheet">
                    <div class="row">
                        <div class="cell">
                            <iframe src="http://192.168.1.34:8083/fhem/ftui/blitzermap.html" title="Blitzermap" width="340px" height="270px" style="border:none;"></iframe>
                        </div>     
                    </div>                   
                </div>
            </li>


Funktioniert nun prima!

Danke an alle!  :)

somansch

Zitat von: Darkrabbit am 21 September 2020, 10:55:00
Hab es jetzt mit folgenden Befehlen hinbekommen (wenn auch etwas gefutscht):

{FileWrite("/opt/fhem/www/tablet/blitzermap.html", fhem("get myBlitzer MapHTML"))}

und anschließend

{system("sudo sed -i 's!<plaintext>!!' /opt/fhem/www/tablet/blitzermap.html")}

So wird das plainttext aus der HTML-Datei entfernt.

Hier das Notify das bei Aktualisierung der Blitzerdaten die HTML neu erzeugt:

define ErzeugeHTMLCodeFuerBlitzerMap notify myBlitzer {{FileWrite("/opt/fhem/www/tablet/blitzermap.html", fhem("get myBlitzer MapHTML"))};;{system("sudo sed -i 's!<plaintext>!!' /opt/fhem/www/tablet/blitzermap.html")}}

Die erzeugte HTML-Datei habe ich dann via iFrame im TabletUI eingebunden.

<li data-row="3" data-col="5" data-sizey="2" data-sizex="3">
                <header>BLITZER-KARTE</header>
                <div class="sheet">
                    <div class="row">
                        <div class="cell">
                            <iframe src="http://192.168.1.34:8083/fhem/ftui/blitzermap.html" title="Blitzermap" width="340px" height="270px" style="border:none;"></iframe>
                        </div>     
                    </div>                   
                </div>
            </li>


Funktioniert nun prima!

Danke an alle!  :)

Deine Lösung funktioniert sehr gut  :D. Vielen Dank an der Stelle!

Hast du eine Idee, wie ich verhindere, dass der Output im FHEM.log erscheint? Das Verbose Level vom Notify zu ändern bringt leider nichts  ???

Viele Grüße
Andreas

Darkrabbit

Hm, stimmt, da kommt ganz schön viel zusammen im Log.  :o

Weiß irgendwer ob / wie man einzelne Devices ganz grundsätzlich vom Log ausschließen kann? Verbose hilft hier in der Tat nicht weiter.

eki

Zitat von: Darkrabbit am 20 September 2020, 11:29:29
Hallo zusammen,

erstmal danke für diese geniale Modul! Läuft super und hat tolle Einstellungsmöglichkeiten.

Ein Frage habe ich jedoch noch:

Hat jemand eine Idee wie ich die ja schon vorhandenen tolle OSM-Karte in FTUI eingebunden bekomme? Also Prinzip soll es genauso aussehen wie im FHEM selbst (entweder direkt auf einer Seite oder z.B. als Popup wenn man auf die "Anzahl" der Blitzer klickt).

Kann man nicht einfach irgendwie über das "get myBlitzer MapHTML" das Coding automatisiert einfügen, so dass dann die Karte dargestellt wird?

Ich habe jetzt mal eine Testversion des FTUI Map Widgets gebaut, die auch Blitzer darstellen kann. Näheres unter:
https://forum.fhem.de/index.php/topic,91781.msg1087083.html#msg1087083