Smart Mirror / Infospiegel mit fhem-Daten

Begonnen von sven@allesclip.de, 03 März 2016, 17:55:21

Vorheriges Thema - Nächstes Thema

Kuzl

Also Ich finde mein Spionspiegel spiegelt genau so gut wie ein normaler. Ich denke bei direktem Vergleich (normaler Spiegel genau daneben) würde es vll auffallen; wenn ich davor stehe fällt mir nix auf, was mich stören würde.

Was schön ist ist, dass der Bildschirm weniger abgedunkelt wird als gedacht. Hat mit dem Handy beim Glaser schlimmer gewirkt :D

glaube meiner ist 6mm, weniger wär aber auch sehr dünn bei der größe.

micomat

hat denn schon jemand Fotos von seinen Basteleien? =)
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

KernSani

Zitat von: Grinsekatze am 20 September 2016, 07:45:06
Gerade FTUI ist ja idR. An dunklen Stellen / im Bildhintergrund nicht schwarz, sondern grau.
Das ist mit einer kleinen Anpassung des Stylesheets schnell erledigt, oder verstehe ich da immernoch was falsch?
Zitat von: Grinsekatze am 20 September 2016, 07:45:06
Ebenfalls soll ja weiterhin der Spiegel auch als Spiegel nutzbar sein. Im Falle eines komplett mit Display hinterlegtem Spiegels zeigt FTUI dann die Daten überall auf dem Spiegel an - auch "im Gesicht des Spiegelnden".
Mit FTUI kann ich mir ziemlich einfach z.B. eine Leiste links und eine oben zusammen basteln...

Ich will dir nicht den Spaß verderben oder bezweifeln, dass bestimmte Anforderungen vielleicht spezielle Lösungen erfordern, ich versuche nur zu verstehen, ob das nicht auch einfacher hinzukriegen ist...

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

ernst1024

Zitat von: Grinsekatze am 20 September 2016, 00:39:56

Mein Spiegel wird 24" Hochkannt werden, voll hinterlegt.

Bildschirmdiagonale? das würde dann auf ca 60cm Höhe auslaufen, richtig?
Gruß Ernst

Grinsekatze

#49
Zitat von: ernst1024 am 20 September 2016, 10:55:55
Bildschirmdiagonale? das würde dann auf ca 60cm Höhe auslaufen, richtig?
Jupp.

Im Zweifelsfall kann man ja als Darstellungsform nehmen, was man möchte. Mir gefiel die Darstellung des Smart Mirror-Projekts. Dies arbeitet jedoch mit NodeJS und besorgt sich die benötigten Daten von diversen Webseiten - nicht aus FHEM.

Daher habe ich, auch weil ich mal wieder Lust hatte etwas zu coden, am Vorbild diesen Projektes eine Version begonnen, die eben FHEM-Daten verarbeitet.

So kompliziert ist es auch nicht: ein paar CSS-Dateien (die größtenteils schon vom Original-Projekt kommen), einige TTF-Dateien (zzt. noch vom Original-Projekt. Jedoch werde ich von zzt. Robots auf San Francisco umstellen), eine PHP-Datei (in der HTML enthalten ist), ein paar JavaScript-Funktionen (etwa für die Uhrzeit).
Dazu kommen dann noch ein paar Definitionen in FHEM (zzt. zwei Dummys und ein Notify für Sonnenauf- und -Untergang, mein HM Außen-Temperatursensor, das Weather-Modul, ein Owncloud-Modul für meinen Terminplan usw.).

Die PHP-Seite bekommt (bzw. zieht) die benötigten Informationen aus FHEM mittels Telnet (zzt. noch ohne Passwort, jedoch habe ich auch ein ungetesteten Code für eine Passwortabfrage).

Noch ist bei mir alles hardcoded (für den ersten Test). Ich werde es jedoch generalisieren, sodass dann z.B. ein Device in FHEM angelegt wird, indem alles für den Spiegel definiert wird (welche Inhalte angezeigt werden sollen, und wo auf dem Spiegel, sowie welche Quellen dafür verwendet werden).

Edit:
Mein Spiegel soll später folgendes unterstützen:
- Datum und Uhrzeit anzeigen,
- aktuelles Wetter (Wetter Icon, Windrichtung, Sonnenauf-/-Untergang),
- Wettervorhersage,
- Anzeige der nächsten Termine,
- ggf. ein Tagesschau-Newsticker,
- Gesichtserkennung und dann je nach erkannter Person individuelle Inhalte ausgeben (z.B. bei mir und allen Anderen auf deutsch, bei meiner Frau auf englisch),
- evtl. Anzeige des Tagesschau 100 Sekunden-Clips (?),
- evtl. Stati meiner HM-Komponenten (z.B. ob ein Fenster auf ist).

Speziell bei der Gesichtserkennung wirkt es auf den ersten Blick leichter, wenn ich mein Konstrukt verwende und keine fertige GUI (die ich dann ja ggf. auch anpassen muss).

ernst1024

Zitat von: Grinsekatze am 20 September 2016, 15:22:53


So kompliziert ist es auch nicht: ein paar CSS-Dateien (die größtenteils schon vom Original-Projekt kommen), einige TTF-Dateien (zzt. noch vom Original-Projekt. Jedoch werde ich von zzt. Robots auf San Francisco umstellen), eine PHP-Datei (in der HTML enthalten ist), ein paar JavaScript-Funktionen (etwa für die Uhrzeit).
Dazu kommen dann noch ein paar Definitionen in FHEM (zzt. zwei Dummys und ein Notify für Sonnenauf- und -Untergang, mein HM Außen-Temperatursensor, das Weather-Modul, ein Owncloud-Modul für meinen Terminplan usw.).

Die PHP-Seite bekommt (bzw. zieht) die benötigten Informationen aus FHEM mittels Telnet (zzt. noch ohne Passwort, jedoch habe ich auch ein ungetesteten Code für eine Passwortabfrage).

Ich scharre auch die ganze Zeit schon mit den Hufen  :)

Einiges von dem was du vor hast ist mir klar, bzw kenne ich mich ein wenig mit aus. CSS ist noch spansich, PHP geht so. Am meisten interessiert mich wie du mit php daten aus fhem ziehst. Hast du da mal ein kurzes Bsp mit dem ich ein wenig experimentieren könnte?

Java script, da muss ich wieder an die geniale Bahnhofsuhr denken http://www.3quarks.com/de/Bahnhofsuhr/
denke die werde ich mir einbinden 8)
Gruß Ernst

Grinsekatze

#51
Ich habe mal ein ersten Screenshot beigelegt.

Die Uhr zählt sekündlich. Das Sonnenstands-Icon ist abhängig von Sonnenaufgang bzw. Sonnenuntergang.

Ein sehr einfacher Weg zum Abrufen sieht so aus (so mache ich es zzt., werde es aber noch optimieren, da es etwas unschön ist):
$fhemhost = "192.168.0.50";
$fhemport = 7072;
$fsock = fsockopen($fhemhost, $fhemport, $errno, $errstr, 30);
$fcmd = "get TemperatursensorAussenbereich param temperature\r\nQUIT\r\n";
fwrite($fsock, $fcmd);
$result=fgets($fsock, 128);


Mir gefällt zzt. noch nicht, dass die Seite beim ersten Laden recht lange benötigt (ca. 1 Minute). Das ist vermutlich den ganzen Telnet Abrufen / Verbindungen geschuldet.

Edit:
Wenn Du lieber mit HTTP-Abrufen arbeiten willst (und nicht mit Telnet), dann kannst Du auch diesen Befehl nehmen:
http://smarthome:8083/fhem?cmd=get%20TemperatursensorAussenbereich%20param%20temperature&XHR=1

ernst1024

Danke. Bekomme aber immer die Meldung: "Unknown argument param, choose one of"

Musste dazu auch das passwort auskommentieren. Bei php gibt's doch auch verschiedene Versionen, oder?

Habe auch ein wenig mit rss gebastelt. Nur als Übung, noch nix schönes aber früh übt sich .........
Gruß Ernst

ChrisK

Zitat von: Grinsekatze am 20 September 2016, 19:00:04
...Mir gefällt zzt. noch nicht, dass die Seite beim ersten Laden recht lange benötigt (ca. 1 Minute). Das ist vermutlich den ganzen Telnet Abrufen / Verbindungen geschuldet.
...
Wenn Du mit dblog arbeitest und die Daten in MySQL ablegst, dann könntest Du die Daten per PHP auch direkt aus der Datenbank abrufen.
Das könnte performanter laufen als für jede Info einen Telnet-Abruf durchzuführen.

Grinsekatze

Zitat von: ernst1024 am 20 September 2016, 21:20:07
Danke. Bekomme aber immer die Meldung: "Unknown argument param, choose one of"
Du musst schon ein gültigen Aufruf für das Device wählen. Vermutlich hat es den Parameter / das Argument "param" nicht.
Guck einfach in FHEM nach, wie der (idr. Get-) Befehl heisst.

ernst1024

Zitat von: Grinsekatze am 21 September 2016, 01:46:10
Du musst schon ein gültigen Aufruf für das Device wählen. Vermutlich hat es den Parameter / das Argument "param" nicht.
Guck einfach in FHEM nach, wie der (idr. Get-) Befehl heisst.

hmnn, ich kann die fhem Datenbank per php und mysql auslesen, aber hierzu bin ich offensichtlich zu blöd :-[
Ich dachte zuerst "parm" wäre so ein HTTP Ding. Habe es dann durch ein "get" ersetzt (obwohl ein get ja schon im AUfruf ist??),
aber dann kommt halt: "Unknown argument get, choose one of"

one of what??

http://192.168.2.112:8083/fhem?cmd=get%208266_f_Aussen%20get%20temperature&XHR=1

http://192.168.2.112:8083/fhem?cmd=get%208266_f_Aussen%20temperature&XHR=1
Gruß Ernst

Grinsekatze

#56
Hinter cmd= kommt einfach der Befehl so, wie er in FHEM auch lautet.
Bei meinem HM Aussenthermometer isr es eben "get <hm device> param temperature". Wobei du darauf achten musst die Leerzeichen umzuschreiben (als %20).

Du verwechselst da was: Du kannst mit (z.B. PHP) die FHEM MySQL-Datenbank auslesen. Dazu musst du aber erstmal eine verwenden, denn FHEM verwendet im Standard nur Textdateien.

Der obige Befehl ist zum auslesen von FHEM Devices direkt (über HTTP oder Telnet).

ernst1024

Ja das ist soweit ja alles klar. Ich lese ja schon die ganze Zeit meine fhem (mysql) datenbank mit php aus, das klappt ja. %20 ist auch klar, Leerzeichen. Und so ist ja auch mein Aufruf:
http://192.168.2.112:8083/fhem?cmd=get%208266_f_Aussen%20temperature&XHR=1

OK will den Verkehr hier aber nicht aufhalten, muss ich nochmal schauen.
Gruß Ernst

Grinsekatze

#58
Wie gesagt: Finde in FHEM heraus, wie Du an deinen Wert kommst. Dazu kannst Du ja im Web-Interface das Device anklicken und bei den Get-Befehlen gucken, was Dir da angeboten wird. Wenn es ein HM-WDS10-TH-O Sensor ist, von dem Du die Temperatur haben möchtest, dann lautet der Befehl:
get <Fhem-Name des HM-WDS10-TH-O-Devices> param temperature

Da eben etwas probieren.

Zum Stand der Dinge bei mir:
- Javascript-Uhr ist fertig (läuft auch sekündlich weiter),
- Datum ist fertig,
- Aktuelles Wetter ist fertig (Temperatur kommt vom HM-WDS10-TH-O, Windgeschwindigkeit und aktuelles Wetter-Symbol kommen vom WEATHER-Modul welches auf Yahoo-Wetter zurückgreift),
- Sonnenauf- bzw Untergang (über 2 Dummys und ein Notify) ist fertig,
- Wettervorhersage für die nächsten 5 Tage (kommt ebenfalls vom o.g. WEATHER-Modul) mit Symbol, Min- und Max-Temp. ist fertig.
- Der Code ist schon etwas aufgeräumt.

- Aktuell arbeite ich an der Umsetzung von CALVIEW um die nächsten 5 Termine auszugeben. Hier ist jedoch etwas doof, dass Calview kein Get bereitstellt. Ich muss also experimentieren, wie ich sonst per Web- oder Telnet-Aufruf an die nötigen Readings gelange.
- Ich werde eine MySQL-Datenbank in FHEM integrieren (bzw. wohl eher FHEM in die DB). Dann werde ich probieren, ob es eine Zeitersparnis ist, die Inhalte von dort zu holen. Alternativ werde ich ggf. die HTML-Inhalte dynamisch laden, sodass nicht alle zur selben Zeit abgerufen werden müssen.
Die Gesichtserkennung wird zum Schluss implementiert, da ich dafür ja auch entsprechende Hardware benötige.
- Ebenfalls werde ich ein Dummy SmartMirror definieren und diesen mit verschiedenen Readings füllen. Das wird dann quasi meine "Konfigurationsdatei". Dort wird hinterlegt werden, wie die FHEM Devices tatsächlich heißen, sodass ihr in der Wahl der Namen frei seid. Auch wird dort hinterlegt werden, welche Module (Datum, Uhr, aktuelles Wetter, Wettervorhersage, Kalender, Spritpreise, Tagesschau-Newsfeed, ...) angezeigt werden sollen.

ernst1024

 ;D ok, mein 'device' (ein Dallas Temperatursensor eingelesen über HTTPMOD) bietet gar kein 'get'. Hier funktioniert ein 'list' anstelle 'get'.

Bei meinen HUE devices hingegen funktioniert 'get'.
Gruß Ernst