Steuerung unserer Wohnung

Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Di 23. Aug 2016, 11:44

tasks.PNG
tasks.PNG (19.89 KiB) 19373 mal betrachtet
Es gibt jetzt eine Aufgaben-Seite. Dort können neue Aufgaben mit oder ohne Fälligkeitsdatum angegeben werden. Werden Aufgaben fällig, ändert sich die Farbe und die Position. Auch eine Benachrichtigung ist möglich. Desweiteren könnte man auch eine Google Kalender Anbindung vornehmen. E-Mail Benachrichtigung geht auch.
tasks2.PNG
tasks2.PNG (8.58 KiB) 19373 mal betrachtet
Im Dashboard werden die aktuellen Aufgaben auch angezeigt. Natürlich auch mit Unterscheidung der Fälligkeit.

So das wars erstmal. Aber kommen weitere Sachen :-)

Insgesamt läuft alles SEHR zuverlässig. Keine Probleme! Vielleicht ist ja für den ein oder anderen noch was dabei!

VG
Sebastian
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
matzespens
Beiträge: 4
Registriert: Mi 9. Mär 2016, 09:00
Wohnort: Offenbach

Di 23. Aug 2016, 13:34

@Sebi:

Ich bin gerade am testen Deiner Anwesenheitserkennung (Vielen Dank nochmal für die Bereitstellung). Die Erkennung an sich arbeitet bisher sauber und zuverlässig. Mein einziges Problem bestand jedoch darin, dass bei Anwesenheit mein Licht jede Minute neu eingeschaltet wurde. Das ist sicher bedingt durch den Cronjob den ich auf den Intervall von einer Minute eingestellt habe.

Ich habe es jetzt so gelöst, dass ich eine zusätzliche Variable zur Unterdrückung der Markeränderung in das Script eingebaut habe. Den Inhalt der Variablen speichere ich dann in eine Textdatei, damit dieser bei der nächsten Ausführung des Scriptes wieder zur Verfügung steht.

Meine Frage ist nun wie Du das gelöst hast? Oder nutzt Du die Anwesenheitserkennung gar nicht um Licht an und auszuschalten?

Grüße

Matze
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Di 23. Aug 2016, 14:26

Moin,

ich nutze die Anwesenheit auch fürs Licht. Bei mir wird zwar alle X Minuten die Anwesenheit per Cronjob geprüft, jedoch prüfe ich auch über die params.htm ob der Marker bereits gesetzt ist. Wenn er gesetzt ist, dann schickt das php Script erst gar nichts zum Lightmanager. Sieht dann so aus die Prüfung der params.htm:

Code: Alles auswählen

$context3 = stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
$content3 = file_get_contents("http://192.168.1.33/params.htm",false,$context3);
$anwesendinfo = substr($content3, 42, -80);
Da gehe ich an die Stelle im Markerblock, wo der Anwesenheitsmarker ist

Code: Alles auswählen

if ($Host1anwesend == 1 OR $Host2anwesend == 1)
{
	$host1_marker_set = 1;
}
else
{
	$host1_marker_set = 0; 
}


if ($host1_marker_set == '1' AND $anwesendinfo == '0')
{
	$context = stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
	$host1_marker = file_get_contents("http://192.168.1.33/control?key=90",false,$context); // Hinter dem key= einfach die Nummer der Szene angeben, die den Marker auf an setzt.
}
elseif ($host1_marker_set == '0' AND $anwesendinfo == '1')
{
	$context2 = stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
	$host2_marker = file_get_contents("http://192.168.1.33/control?key=91",false,$context2); // Hinter dem key= einfach die Nummer der Szene angeben, die den Marker auf aus setzt.
}
Dort packe ich Info aus der Fritz!Box und aus der params.htm in eine If-Prüfung.
Wenn also Fritz!Box sagt, HostXY ist da und der Marker in der params.htm noch auf 0 ist, dann schickt er dem Lightmanager den Befehl den Marker zu aktivieren.

Wenn Fritz!Box sagt, HostXY ist nicht mehr da und der Marker in der params.htm noch auf 1 ist, dann schickt er dem Lightmanager den Befehl zu deaktivieren.

Man könnte noch die Exit (Else) Bedingung definieren, habe ich mir aber gespart. Also alle anderen Fälle (Fritz!Box = da und Marker ist schon auf 1) werden nicht weiterverarbeitet.

Somit blinkt der Lightmanager auch nicht alle X Minuten wenn der Marker wieder überschrieben wird.

Hoffe ist verständlich und kann dein Problem lösen.

Gruß
Sebastian
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
matzespens
Beiträge: 4
Registriert: Mi 9. Mär 2016, 09:00
Wohnort: Offenbach

Di 23. Aug 2016, 15:36

Ah, an die Möglichkeit habe ich gar nicht gedacht. Ich habe das ähnlich gelöst nur das ich einen eigene Variable nutze deren Inhalt in einer Textdatei abgelegt und ausgelesen wird.

Hier mal die Auschnitte die ich abgeändert bzw. eingefügt habe:

Hiermit lade ich den Inhalt der Textdatei in die Variable erkennung_pause:

Code: Alles auswählen

$dateihandle = fopen("erkennung.txt","r");
$erkennung_pause = fread($dateihandle, 10);
Und hier habe ich beim setzen der Marker die Abfrage der Variablen erkennung_pause mit eingebaut. Zusätzlich lasse ich dann am Ende den neuen Wert in die Textdatei schreiben:

Code: Alles auswählen

if ($host1_marker_set == '1' AND $erkennung_pause == '0')
{
	$context = stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
	$host1_marker = file_get_contents("http://smarthome:m20092008m@10.10.9.47/control?key=8",false,$context); // Hinter dem key= einfach die Nummer der Szene angeben, die den Marker auf an setzt.
	echo 'Es ist jemand zu Hause!';
	$erkennung_pause = 1;
	fwrite($dateihandle, $erkennung_pause);
	fclose($dateihandle);
}
elseif ($host1_marker_set == '0' AND $erkennung_pause == '1')
{
	$context2 = stream_context_create(array('http' => array('header'=>'Connection: close\r\n')));
	$host2_marker = file_get_contents("http://smarthome:m20092008m@10.10.9.47/control?key=9",false,$context2); // Hinter dem key= einfach die Nummer der Szene angeben, die den Marker auf aus setzt.
	echo 'Es ist niemand zu Hause!';
	$erkennung_pause = 0;
	fwrite($dateihandle, $erkennung_pause);
	fclose($dateihandle);
}
Ich glaube ich werde es aber dann auch über die Markerabfrage machen. Eine Fehlerquelle weniger und ich bekomme den wirklichen Zustand des Markers zurück.
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Di 23. Aug 2016, 20:21

Viele Wege führen nach Rom. :-)

Das Ganze wächst und reift mit der Zeit.
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Benutzeravatar
maio
Beiträge: 28
Registriert: Mo 15. Aug 2016, 08:58
Wohnort: Tirol

Mi 31. Aug 2016, 19:40

Hallo Sebastian!

Erstmal riesiges Lob und vielen Dank, dass du deine Ideen und deren Umsetzung mit uns teilst. Hut ab!!

...da geht also noch was...

Du hast mich nach Jahren der LM Pro Nutzung wieder aufs Neue inspiriert und es wird jetzt die nächsten Tage neu eingekauft. LM Air, Trust-Aktoren, Wand-Tablet mit Android, Gira-Wandschaltermaterial, usw. Ja, "es reift mit der Zeit!" :D

Hochinteressant ist die Sache mit den Möglichkeiten via PHP/json_decode. Ich kann mir da Mithilfe von Bootstrap und jQuery so einiges vorstellen. Da rentiert es sich dann zeitlich schon, an einem eigenen HTML-Gerüst zu basteln.

Ich selber werde die nächsten Wochen erstmal soft mit ImperiHome auf Android starten und später wohl auch zur vollständig autonomen Variante mit eigener "Home-Site" auf der Synology DS wechseln. Hammermässig, ich freu mich 8-)

...
Mich würde noch interessieren, setzt du die Links der Oberfläche zu LM Aktoren bzw. Szenen manuell oder liest du sie irgendwie automatisch vom LM aus?

Und welche Dateien müssen auf dem LM bleiben (also nicht extern auf NAS) damit alles funktioniert?

Danke!
Grüße aus Tirol!

PS: habe heute gesehen, dass die Synology Surveillance Station eine WebAPI besitzt, mit der Kameras per HTTP-Link gesteuert werden können. Kann der LM Air beim Schalten eines Aktors auch HTTP-Requests (mit)senden?
zB. Schalter an der Wand startet Kameraaufnahme.

PPS: Und ja, es besteht weiterhin Interesse an deinen Neuerungen! ;)
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Mi 31. Aug 2016, 22:08

Hallo maio!

Vielen Dank für dein Lob. Das motiviert, weiter zu machen :lol:

Zu Deinen Fragen:

Mich würde noch interessieren, setzt du die Links der Oberfläche zu LM Aktoren bzw. Szenen manuell oder liest du sie irgendwie automatisch vom LM aus?

-> Die setze ich im Moment manuell. Denkbar wäre es natürlich, diese Informationen aus der config.xml herauszuziehen. Da sollte sich ja an der Struktur seitens JBMedia nichts ändern. Das ist natürlich schon High-End Freakig aber mit Sicherheit interessant. Danke für die Idee :lol:

Und welche Dateien müssen auf dem LM bleiben (also nicht extern auf NAS) damit alles funktioniert?

-> Im Grunde kann alles so bleiben wie "ab Werk". Auf dem Lightmanager würde ich gar keine zusätzlichen Dateien ablegen. Muss nicht sein. Als Tipp für die Marker (da änderte JBMedia in der Vergangenheit schon mal gerne Kleinigkeiten im Code, die dafür sorgen, dass die eigens gebaute Markeransicht nicht mehr funktionierte): Macht pro Marker eine Szene, die man dann toggeln kann. Die Markerzustände dann einfach aus der params.htm ziehen und beim onclick einfach mit jquery und div arbeiten. Damit ist man fit für die Zukunft und etwaigen Änderungen seitens JBMedia :-)

Kann der LM Air beim Schalten eines Aktors auch HTTP-Requests (mit)senden?

-> Klar, kein Problem. Wenn du einen IP Aktor (z.B. HTTP-Request senden) angelegt hast, kannst du den in deinen Aktionen und Szenen ganz normal mitnutzen. Alles möglich :)

PPS: Und ja, es besteht weiterhin Interesse an deinen Neuerungen! ;)

-> OK. Hier nochmal was neues :lol: :
backup.PNG
backup.PNG (47.74 KiB) 19280 mal betrachtet
Dort lasse ich mir, wie man unschwer erkennen kann, anzeigen, ob Backups auf der Synology erfolgreich gelaufen sind. Es gibt leider keine Möglichkeit, diese Informationen über SNMP oder eine API auszulesen. Es gibt ein Logfile (messages), wo diese Informationen geloggt werden. Dort landen aber auch sämtliche andere Logs der Synology. Und da hatte ich keine Lust was zu basteln, was dann morgen nicht mehr funktioniert.

Also was tun? Eigentlich recht einfach: Mit jedem Backup wird jetzt eine Mail an ein eigenes Postfach verschickt, welche das folgende Format hat (Mail Inhalt kann man komplett selbst definieren):

%TASK_NAME%/%TASK_TYPE%/%DESTINATION_IP%/%DESTINATION_PATH%/%START_TIME%/%DURATION%/erfolgreich/

oder halt

%TASK_NAME%/%TASK_TYPE%/%DESTINATION_IP%/%DESTINATION_PATH%/%START_TIME%/%DURATION%/fehlgeschlagen/

Dort werden die Daten dann durch / getrennt. Sonst enthält die Mail keine Infos. Das Amazon Backup läuft z.B. jeden Tag um 03:00Uhr. Um 5 Uhr wird dann ein PHP Script per Cronjob gestartet, welches alle neuen Mails ausliest (das / ist dann das Trennzeichen) und die Infos in die DB schreibt. Dann wird die Mail gelöscht. Dann habe ich alle Infos die ich brauche und kann normal weitermachen (Leider gibt es keine Variable für Backupgröße, das wär noch schön gewesen). Ist auch Zukunftssicher und im Grunde sehr einfach.

Über den Weg kann man auch noch viele andere Infos der Syno auslesen, wenn man nicht unbedingt mit SSH, SNMP und Co anfangen will.

Gerne kann ich auch da Infos geben, wie das geht.

Gruß
Sebastian
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

So 3. Sep 2017, 09:44

Moin zusammen :-)

da wir vor geraumer Zeit umgezogen sind, habe ich mein Smarthome Dashboard komplett überarbeitet. Nachdem ich in der letzten Version alles Mögliche in das Dashboard reingepackt hatte, wollte ich nun eins ohne viel Schnick-Schnack bauen. D.h. Dinge wie DSL Informationen (die kann ich eh nicht mehr auslesen, da wir nun einen FTTH Anschluss haben) oder Kino Infos stelle ich gar nicht mehr dar. Zusätzlich habe ich auch mehr Dinge automatisiert.

Schaut selbst :-)

Dies ist der neue Startscreen:
db_1.PNG
db_1.PNG (96.48 KiB) 18638 mal betrachtet
Generell habe ich das Dashboard nicht mehr nach Räumen, sondern nach Funktionen aufgeteilt. Pro Funktion (Licht / Rolläden...) gibt es eine farbliche Abhebung.

Damit wird wir wissen, wann wir den Müll rausstellen müssen, trage ich die Termine in eine kleine Datenbank ein (inkl. Admin Oberfläche für das Eintragen der Termine). Wird am nächsten Tag der Müll abgeholt, erscheint eine entsprechende Meldung im Dashboard. Zusätzlich wird am Vorabend eine SMS (Telekom EMail2SMS Gateway) verschickt, damit man noch mal dran erinnert wird.

Die Wetterkachel holt nachwievor die Wetterdaten aus der MySQL Datenbank, welche 1x pro Stunde mit Daten der DarkSky API befüllt wird.

Unter der Wetterkachel befinden sich die Temperaturen/Luftfeuchtigkeiten der einzelnen Räume sowie die des Serverschranks. In drei Räumen befinden sich Oregon Scientific Sensoren. Im Flur nutze ich den Temperatur Sensor des Lightmanagers (Deshalb da auch keine Luftfeuchte). Im Serverschrank läuft ein RaspberryPi, an den ich DHT22 Sensor angeschlossen habe. Dort läuft ein CronJob, der die Daten des Sensors über ein Shell-Script in die Datenbank schreibt. Die Kacheln ändern je nach Luftfeuchte die Farbe. Somit weiß man immer wann man lüften muss.

Unter der Wetterkachel befindet sich die Sonos Steuerung (bislang nur für das Badezimmer). In dieser Kachel nutze ich die Sonos Integration des Lightmanagers.

Die Kachel unter der Sonos Steuerung dient als Info Bereich. Sind alle Türen und Fenster geschlossen? Ist der Alarm aktiviert? Ist jemand zu Hause? (Anwesenheitserkennung läuft nachwievor über die FritzBox)

Im rechten Bereich werden die zwei Außenkameras dargestellt, welche komplett über eine API gesteuert werden können). Unter diesem befinden sich bekannte Quick Actions.
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

So 3. Sep 2017, 09:49

Der Wetterbereich:
db_2.PNG
db_2.PNG (85.95 KiB) 18638 mal betrachtet
Deutlich aufgeräumter mit den wesentlichen Informationen.

Sonos Steuerung (Badezimmer)
db_3.PNG
db_3.PNG (126.02 KiB) 18638 mal betrachtet
Da ich in unseren neuen Räumlichkeiten aufgrund der Entfernungen nicht mehr mit Bluetooth arbeiten konnte, hat nun auch Sonos bei uns Einzug gehalten. Zunächst nur im Badezimmer.

Ich habe das Sonos System in den Lightmanager eingebunden. Damit lassen sie die grundlegenden Dinge steuern (Lautstärke,...). Da ich aber gerne auch direkt Sender oder Playlisten innerhalb des Sonos Systems ansteuern wollte, erfolgt diese erweiterte Steuerung über ein FHEM System mit entsprechendem Sonos Modul. Darüber lassen sich sämtliche Funktionen von Sonos ansteuern und z.B. auch aktuelle Titel / Sender auslesen. Alle Aktionen von FHEM habe ich dann wiederum über HTTP Requests in den Lightmanager eingebunden. Somit können alle Aktionen von FHEM auch in Lightmanager Szene genutzt werden.
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

So 3. Sep 2017, 09:58

Rolladensteuerung
db_4.PNG
db_4.PNG (70.95 KiB) 18638 mal betrachtet
Da wir nun auch elektrische Rolläden haben, darf natürlich die Steuerung der selbigen über mein Smarthome System nicht fehlen. Somit wurden die alten Schalter durch FS20 RSU-2 Aktoren ersetzt. Zusammen mit dem passenden Blendenadapter (Busch Jäger) perfekt integriert. Funktioniert 100% zuverlässig.

Natürlich lassen sich in der Rolladenansicht die einzelnen Räume steuern (Rauf / Runter / Halbhoch) oder alle Rolläden gleichzeitig. Über Marker habe ich eine Rolladen-Automatik realisiert.

Lichtsteuerung
db_5.PNG
db_5.PNG (56.51 KiB) 18638 mal betrachtet
Da wir nun überall LED Deckenleuchten habe, konnte ich meine Intertechno Micromodule nicht mehr weiternutzen (Wenn jemand Interesse hat, kann er sich gerne bei mir melden. Sind günstig abzugeben). Viele Wechselschaltungen machen das Ganze nicht unbedingt einfacher.

Deshalb habe ich mich in 3 Räumen für Philips HUE Birnen entschieden. Die können über die API komplett angesteuert werden. Der grüne Balken rechts neben der HUE Zone zeigt an, ob die Birne erreichbar ist. Im Flur nutze ich einen LD382 Controller.
Zuletzt geändert von Sebi am So 3. Sep 2017, 10:07, insgesamt 1-mal geändert.
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Antworten