SensorAndSwitch Haus-Automation auf Webserver-Basis

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
sas (2).pngSensorAndSwitch
WebGUI mit Schaltfunktion und Automation als PHP-Script
installiert z. B. auf einer mit Original-Firmware laufenden Fritzbox oder einem RaspberryPI.

Vorgeschichte, Funktionsumfang, Voraussetzungen, Beispiele, Installation und Download:

die neueste Version 4 und 5 Beta speziell für den PI bei
logo.png
mit noch mehr Möglichkeiten:
SAS4PI-Web

oder die Version 3 für Fritzbox und PI, alles dazu bei
logo.png
Der damalige Nachfolger von SmartHome:
SensorAndSwitch Web

Beide Versionen sind nur bedingt kompatibel.

Besteht Interesse daran, noch weitere Anzeigen oder Funktionen in das Script zu integrieren? Wenn ja, bitte hier im Forum-Thread posten.
Viel Spaß damit. :)

Es gibt auch eine Version 6.00 Alpha zum manuellen Installieren im Entwicklungsstadium zur Verwendung auf einem Raspberry Pi 2B oder höher:
SAS V6.00 alpha

Überblick:

SensorAndSwitch ist ein PHP-basiertes Gesamtpaket, welches das Anzeigen, Schalten und Automatisieren von Schaltvorgängen beinhaltet. Es basiert auf einem grafischen Webinterface und einem cron-basierten PHP-Automationsscript.

Das Web-User-Interface kann Informationen und Schaltzustände der an die Fritzbox angemeldeten HomeGeräte optisch aufbereitet angezeigen. Es kann auch leicht beliebige PseudoGeräte integrieren, die aus Webseiten Sensorinformationen beziehen oder andere IP-basierte Geräte steuern können.

Es besteht auch die direkte Schaltmöglichkeit bereits in der Adresszeile des Browsers durch Mitgabe von Parametern.

Mit SensorAndSwitch Automation können komplexe Schaltszenarien erstellt und automatisiert ausgeführt werden.

Benötigt wird ein Webserver (z. B. Apache) mit PHP-Unterstützung (empfohlen 5.2 oder höher). Dieser kann auch auf der Fritzbox laufen. Auch ein anderer Webserver im Heimnetz ist möglich.

Bilder:

WebGUI:
sasui.png oder weitere Designs
buttonicon.png classicicon.png metallicicon.png

WebGUI Einstellungen:
saseinstellungen.png

Automation Statusanzeige:
sasap.png

Automation Festlegung Schaltbedingungen:
sasapui.png

Vorschau auf V 6.00:
v61.jpg
 
Zuletzt bearbeitet:

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@SF1975: Der "Normalfall" ist aber, dass kein Benutzer sondern nur ein Kennwort möglich ist. Dass man aber dann bei meinem Script nicht herumzurätseln braucht, was man unter Benutzer eintragen soll, mein Hinweis dort leer "" zu lassen. Ich hatte vorher mit "admin", "root" und allem rumexperimentiert, bis es dann ohne Eintrag lief. Daher der Hinweis. Aber Danke für die Info. Das bedeutet, dass die, die nach dem HowTo vorgegangen sind, ihren angelegten Benutzernamen auch im Script eintragen müssen.
 
Zuletzt bearbeitet:

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
Neue Version 3.10.2870:
- Zusätzliche Informationen in der WebGUI
- Erweiterte mobile WebGUI
- Bugfixes

Download Post #1
 

PCMor

Mitglied
Mitglied seit
17 Jul 2007
Beiträge
368
Punkte für Reaktionen
0
Punkte
16
Hallo JL3,

erstmal: Kudos! Genau so etwas habe ich für mein Weibchen zur Tablet- statt C4-Nutzung gesucht!
Es tut auch erstmal genau das, was es soll. Vielen Dank dafür :p

Aufgefallen sind mir die folgenden Punkte:
  • lädt die Smarthome-Seite, wird zunächst die Sortierung so angezeigt, wie auch die FB sie anzeigt: in der Reihenfolge des Pairings der Smarthome-Dosen (also ohne Sortierung, will ich meinen)
    • das hat aber dann den Effekt, dass man u.U. (so mir gestern bei der ersten Demonstration direkt passiert), direkt nach Aufbau der Seite die Zeile der Dose antippt, die man abschalten will - und plötzlich wird umsortiert (nach Namen) und man erwischt die nicht gewollte Zeile (in meinem Fall: *bumms* TV aus... :D )
      • wäre es hier nicht erstmal aus "Sicherheitsgründen" sinniger, entweder standardmäßig "sortierung=keine" zu nutzen, oder aber erst die Zeilen anzuzeigen, nachdem bereits - wie in diesem Fall von dir gewünscht nach Namen - sortiert wurde? Ist jetzt kein Beinbruch, ich rufe deine PHP halt mit der gewünschten Sortierung auf, aber es fühlt sich erstmal verwirrend an, wenn die erste Anzeige plötzlich umsortiert wird, da die PHP ohne eine deiner Sortier-Optionen geladen wurde.
  • ich habe eine meiner 3 DECT200 auf Dauerbetrieb gestellt, in deinem GUI betitelt mit "manuell, gesperrt" - das soll wohl auch durch ein zusätzliches Bildchen verdeutlicht werden, aber das zu ladene Bildchen ist offenbar nicht vorhanden, da auf egal welchem Device oder mit welchem Browser immer ein "?"-Symbol angezeigt wird... aber das ist Kosmetik, die Funktion ist da: die Zeile ist nicht touch- bzw. klickbar
  • a-pro-pros Kosmetik: ich persönlich klicke gerne Buttons - siehst du eine Möglichkeit, innerhalb der Zeile nur den jeweiligen Button mit Aktionen zu versehen? Und diese Aktion in der Tat auch sicherheitshalber noch mal mit einer Bestätigungsabfrage? (Dann wäre mir das gestern mit dem TV nicht passiert... :( )
  • noch einer: aktualisieren die DECTs wirklich so schnell ihren Status? Kommt mir vor, als würde dein Script alle ~5s neu laden, aber sind denn dann schon neue Daten da? Reichten nicht vielleicht 10s auch aus?

Aber was red' ich, im Grunde wollte ich nur mal Feedback geben, weil ich von PHP null Ahnung habe und mich einfach riesig über kreative Leistungen wie die Deine freue!
An dieser Stelle auch einen lieben Gruß von meiner besseren Hälfte - die jetzt auch nicht mehr das Telefon zum (Wieder-)Einschalten zu holen braucht ;)
 
Zuletzt bearbeitet:

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@PCMor: Vielen Dank fürs Feedback. Mit welcher Version passiert dir dieses Umsortieren? Ich habe bei meiner Version, an der ich gerade bin, einen ähnlichen Fehler festgestellt und korrigiert, weil ein Parameter vom Script nicht sich selbst beim Aufruf übergeben wurde. Daher wäre es für mich interessant zu wissen, wie oben im Browser nach dem "Umsortieren" die Adresszeile aussieht. Fehlt da z. B.: ...?info=ui&sortierung=gruppe oder etwas anderes? Betrifft es das mobile (schlichte) oder das Browserinterface?
 

PCMor

Mitglied
Mitglied seit
17 Jul 2007
Beiträge
368
Punkte für Reaktionen
0
Punkte
16
@JL3:
nutze die letzte von dir verlinkte Version V 3.10.2870.

Rufe ich einfach die smarthome.php ohne Optionen auf, sieht nach der ersten Aktualisierung die URL so aus:
http://webserver/smarthome.php?info=ui&sortierung=name (es gibt bei mir keine Gruppen)

Desgleichen auf mobilen Devices, wobei ich zugegebenermaßen die Option info=mobile (bitte um Vergebung) grottenhäßlich (nochmals sorry, ich weiß, du hast dir dabei etwas gedacht) finde und sie eigentlich auch eher für Displays von vllt. 320x240px gemacht zu sein scheint - für mich persönlich zumindest nicht relevant, aber der Effekt bleibt derselbe.

Insofern: nein, ui und sortierung sind da, zumindest im Browser-Interface - das Mobile... nun ja, s.o. ;) (und nochmal sorry)
 

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@PCMor: Fehler gefunden und korrigiert. Neue Version 3.25.3011 gibt es gleich oben.

Nur kurz zur Erklärung: Wird über Parameter keine Sortierung mitgegeben, so nahm er beim Selbstaufruf "sortierung=name". Dadurch wechselte die Sortierung plötzlich. Jetzt ist es so, dass wenn keine Sortierung angegeben wird "sortierung=keine" beim Selbstaufruf übergeben wird und die Sortierung wechselt nicht mehr.

Wünscht man dennoch eine Sortierung, so muss man beim Link eine Sortierung vorgeben.
z. B.: http://[server]/[pfade]/smarthome.php?sortierung=gruppe
Es gibt "keine" oder "name" oder "gruppe" als Sortiermöglichkeit.

Nachtrag: Hatte übersehen, dass du noch mehr Fragen gestellt hast:
lädt die Smarthome-Seite, wird zunächst die Sortierung so angezeigt, wie auch die FB sie anzeigt: in der Reihenfolge des Pairings der Smarthome-Dosen (also ohne Sortierung, will ich meinen)
das hat aber dann den Effekt, dass man u.U. (so mir gestern bei der ersten Demonstration direkt passiert), direkt nach Aufbau der Seite die Zeile der Dose antippt, die man abschalten will - und plötzlich wird umsortiert (nach Namen) und man erwischt die nicht gewollte Zeile (in meinem Fall: *bumms* TV aus... )
wäre es hier nicht erstmal aus "Sicherheitsgründen" sinniger, entweder standardmäßig "sortierung=keine" zu nutzen, oder aber erst die Zeilen anzuzeigen, nachdem bereits - wie in diesem Fall von dir gewünscht nach Namen - sortiert wurde? Ist jetzt kein Beinbruch, ich rufe deine PHP halt mit der gewünschten Sortierung auf, aber es fühlt sich erstmal verwirrend an, wenn die erste Anzeige plötzlich umsortiert wird, da die PHP ohne eine deiner Sortier-Optionen geladen wurde.
Das ist jetzt korrigiert.
ich habe eine meiner 3 DECT200 auf Dauerbetrieb gestellt, in deinem GUI betitelt mit "manuell, gesperrt" - das soll wohl auch durch ein zusätzliches Bildchen verdeutlicht werden, aber das zu ladene Bildchen ist offenbar nicht vorhanden, da auf egal welchem Device oder mit welchem Browser immer ein "?"-Symbol angezeigt wird... aber das ist Kosmetik, die Funktion ist da: die Zeile ist nicht touch- bzw. klickbar
In der neuen obigen Version ebenfalls korrigiert. Bild hat in der ZIP gefehlt.
a-pro-pros Kosmetik: ich persönlich klicke gerne Buttons - siehst du eine Möglichkeit, innerhalb der Zeile nur den jeweiligen Button mit Aktionen zu versehen? Und diese Aktion in der Tat auch sicherheitshalber noch mal mit einer Bestätigungsabfrage? (Dann wäre mir das gestern mit dem TV nicht passiert... )
Die Zeile ist ein durchsichtiger Button. Bei einer meiner ersten Varianten hatte ich nur das grüne bzw. rote Schaltsymbol als Button, doch das war auf einigen Displays zu klein zum antippen. Das mit der Sicherheitsabfrage habe ich extra nicht gemacht, da dies das Script stoppt und das macht noch die Gruppenschalterüberwachung.
noch einer: aktualisieren die DECTs wirklich so schnell ihren Status? Kommt mir vor, als würde dein Script alle ~5s neu laden, aber sind denn dann schon neue Daten da? Reichten nicht vielleicht 10s auch aus?
Ja, die aktualisieren sogar noch schneller. Außerdem wie oben schon gesagt nimmt das Script auch die Gruppenschalterüberwachung wahr und sollte hier möglichst zeitnah arbeiten. Wenn du keine Gruppenschalter hast und es langsamer aktualisiert haben möchtest, kannst du die smarthome.php mit einem Editor (z. B. Notepad++) öffnen und die Zeile 274 von
Code:
				<meta http-equiv="refresh" content="5; url=smarthome.php?info='.$Info.'&sortierung='.$Sort.'" />
in
Code:
				<meta http-equiv="refresh" content="10; url=smarthome.php?info='.$Info.'&sortierung='.$Sort.'" />
ändern. Dadurch ist das Neuladen nun alle 10 Sekunden.
 
Zuletzt bearbeitet:

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@PCMor: Wir haben wohl gerade zusammen unsere Posts abgeschickt, daher nochmal kurz zur "grottenhässlichen" mobile-Variante. Ich finde die auch hässlich, aber sie lässt sich z. B. auf meinem s/w-eBook-Reader gut bedienen und darstellen, wo die andere nur graue Schlieren produziert. Dafür habe ich sie eingebaut und für meinen alten PDA, der mit CSS nicht viel anfangen kann. Ich entwickle diesen mobile-Zweig auch nicht mehr weiter.

@alle
Im Augenblick teste ich mein neues PHP-Script, welches über eine auf der Fritzbox im Hintergrund gestartete Bussybox einen minütlich aufgerufenen cron-Job in Form eines php-Scripts aufruft. Dieses schaltet dann die Steckdosen automatisch. Jedoch nicht nach dem recht starren System der Fritzboxvarianten, sondern man definiert frei beliebig viele Ein- oder Ausschaltzeiten. Ebenso geht das Schalten einer Dose nach dem Zustand einer anderen. Ebenfalls integriert ist Sonnenauf-/untergang mit beliebigen Minuten vor oder nach dem Ereignis. Gleichermaßen kann man Schaltungen vom Verbrauch einer anderen Dose abhängig machen.

Code:
	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   Smart Home Automation                                             |
		|   ===============================================================   |
		|   automatische Schaltung nach Konfigurationsdatei                   |
		|   -> Benötigt Fritz!OS 6.10 oder höher für Steuerung mit Fritzbox   |
		|   -> PHP-Parser 5.x                                                 |
		|                                                                     |
		|	smarthomeauto.conf-Beispiele       schaltet                       |
		|	 1,X,1530,3,*,FX-Dose    		-> an um Uhrzeit Wochentag        |
		|	 1,X,**00,*,*,FX-Dose 			-> an zur vollen Stunde           |
		|	 0,X,0530,*,24092014,FX-Dose    -> aus um Uhrzeit Datum           |
		|	 0,X,1130,*,01******,FX-Dose    -> aus um Uhrzeit jeden 1. im Mon.|
		|	 0,A,30,*,*,FX-Dose	 			-> aus um 30 Min nach Sonnenaufg. |
		|	 1,U,-10,*,*,FX-Dose     		-> an um 10 Min vor Sonnenunterg. |
		|	 1,W,>,10.000,SZ-LED,FX-Dose    -> an wenn SZ-LED mehr als 10 Watt|
		|                                      verbraucht                     |
		|	 1,S,1,1,SZ-LED,FX-Dose         -> an wenn SZ-LED aktiv und an ist|
		|                                                                     |
		|	 alle Werte von Zeit und Datum können Sterne (*) enthalten, die   |
		|	 dann durch die aktuelle Vergleichszeit ersetzt werden.           |
		|	 Schalter = 0/1 aus/an                                            |
		|	 Typ      = X (nach Zeit), A/U (astronomisch), W (nach Watt eines |
		|	            anderen Gerätes), S (nach Schaltzustand eines         |
		|	            anderen Gerätes)                                      |
		|	 X Zeit,Wochentag(1-7),Datum,Gerätename                           |
		| 	 A/U Abweichung in Minuten,Wochentag,Datum,Gerätename             |
		| 	 W >/>=/=/==/</<=,Watt,anderes Gerät Name,Gerätename              |
		|	 S 0/1 Aktiv,0/1 Schalter anderes Gerät,anderes Gerät Name,Geräte-|
		|      name                                                           |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/
Wie gesagt, das ist gerade bei mir im Test und läuft bis jetzt sehr stabil. Dafür gibt es auch schon ein Web-Interface, welches die Eintragungen der Schaltvorgänge erleichtert. Wer noch Ideen hat, einfach posten.
 
Zuletzt bearbeitet:

ws65

Aktives Mitglied
Mitglied seit
23 Jan 2012
Beiträge
1,015
Punkte für Reaktionen
12
Punkte
38
wollte das auch mal versuchen.

hab mir extra Mini-Webserver installiert.

wenn ich aber smarthome.php aufrufe bekomme ich nur ein "Invalid Request"

was mache ich falsch?
falscher Server?
fehlende Parameter?
falsche FB, Firmware?
findet er nicht die richtige FB, hab zwei .

zugegeben mit Server kenne ich mich nicht so aus, gibt es vieleicht eine Anleutung für Dumme?
 

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@ws65: Ich habe bei mir einen Apache Webserver 2.2 mit PHP 5.4 direkt auf der Fritzbox laufen. Diesen kann man leicht über Google finden. Es gibt für verschiedene Fritzbox-Modelle je nach Prozessor unterschiedliche Kompilierungen. Diesen kann man dann auf einem angeschlossenen USB-Massenspeicher per Telnet starten. Wichtig ist, dass der Apache PHP 5.2 oder höher-fähig ist.

Man erfährt, welche PHP-Version auf dem Server installiert ist mit phpinfo.php mit folgendem Inhalt:
Code:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php phpinfo(); ?>
</body>
</html>
Sollte da alles passen (geht auch mit einem anderen beliebigen Server, der PHP >=5.2 unterstützt), muss man die Eintragungen in der smarthome.php noch ergänzen.
Code:
	define ("FB","http://fritz.box");
	define ("USER","hier Benutzer eintragen");
	define ("PASSWORD","hier Kennwort eintragen");
Wenn man mehrere Fritzboxen hat, nimmt man beim Eintrag "FB" statt obigem die IP der Fritzbox.

Wenn dein Mini-Webserver ein Apache ist, tippe ich wegen des Fehlers auf ein Problem in dessen Konfigurationsdatei. Da gibt es je nach Version ebenfalls unterschiedliche Möglichkeiten, woran es liegt.

Generell würde ich dir raten, Schritt für Schritt vorzugehen.
1. Webserver mit PHP installieren.
2. Webserverkonfigurationsdatei einrichten.
2. PHP-Version testen.
3. Spezifische Angaben im smarthome.php-Script abändern: Fritzbox-Adresse, Benutzer, Kennwort
Dann müsste es laufen.

Ich habe selbst einige Webserver installiert und ausprobiert und einige Einstellungen in dessen Konfiguration anpassen müssen, bis einer dann anständig (bei mir direkt auf der FB) lief. Es ist je nach Umfeld Einiges an Geduld und Googlesuche nötig, wenn man auf keinen lauffähigen Webserver zurückgreifen kann. Sorry, dass es keine einfachere Möglichkeit gibt.
 
Zuletzt bearbeitet:

ws65

Aktives Mitglied
Mitglied seit
23 Jan 2012
Beiträge
1,015
Punkte für Reaktionen
12
Punkte
38
Danke für die Antwort,

dann weis ich bescheid, hatte auf die schnelle diesen Server versicht: http://www.aidex.de/software/webserver/

damit geht es dann nicht, muss ich doch den Apache installieren.

auf der FB direkt möchte ich aber noch nicht, erst mal auf dem Pc testen.

Die 3 Zeilen hatte ich schon angepasst, auch die IP anstadt Fritz.Box
 

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@ws65: Richtig, der Miniserver hat kein PHP, daher der "Bad Request".

Nach kurzem Googeln: Hier wäre ein Server für Windows, der ohne Installation läuft (Habe es gerade getestet). http://www.server2go-web.de/download/download.html (die oberste ZIP-Datei links oben unter "Apache 1.3.35" und "PHP 5.3.2, SQLite" genügt.)
Nach dem Entpacken der ZIP irgendwo auf ein Speichermedium im Verzeichnis "server2go\" die Datei "pms_config.ini" öffnen und den Eintrag Zeile 14 von "KeepRunningAfterBrowserClose=0" auf "KeepRunningAfterBrowserClose=1" setzen.
Danach in das Unterverzeichnis "server2go\htdocs\" die SmartHome-ZIP-Datei entpacken. Der Server ist dann im Browser unter "http://localhost:4001/" erreichbar.
 

ws65

Aktives Mitglied
Mitglied seit
23 Jan 2012
Beiträge
1,015
Punkte für Reaktionen
12
Punkte
38
hab inzwischen auch was gefunden.

der XAMPP von der Chip Downloadseite geht auch.

komme damit auf die Gui, hab allerdings eine Fehler drin.

z.B. Fehler in Zeile 61, 72, 262, 820

das könnte aber daran liegen das ich bisher nur eine Dect200 Steckdose habe, vermute ich mal.

aber schalten der Steckdose funktioniert.
 

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@ws65: Das sind vermutlich nicht unterdrückte Warnings von PHP oder Server. Dass nur eine Steckdose angeschlossen ist, dürfte nicht der Grund sein.

Warnung in Zeile 61: Der Server kann kein https (da wird getestet, ob ers könnte).
Warnung in Zeile 72: Dem Script wurde keine Option "schalter" übergeben, was auch nicht nötig ist.
Zeile 262 und 820 kann ich mir nicht wirklich erklären.
server2go bringt diese Meldungen jedenfalls nicht, da dort Warnings unterdrückt sind. Müsste aber auch deinem möglich sein, dies einzustellen.
 

ws65

Aktives Mitglied
Mitglied seit
23 Jan 2012
Beiträge
1,015
Punkte für Reaktionen
12
Punkte
38
stimmt, mit server2go keine Fehler mehr da.
 

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@ws65: Prima, freut mich, danke für die Rückmeldung.
 

PCMor

Mitglied
Mitglied seit
17 Jul 2007
Beiträge
368
Punkte für Reaktionen
0
Punkte
16
@PCMor: Fehler gefunden und korrigiert. (...)
Hi JL3,

sorry für's späte Feedback - die Arbeit...

Möchte jedenfalls bestätigen, dass das Script jetzt super funktioniert und bestens aussieht! Danke dafür!!

Habe nach deiner Anleitung die Aktualisierungsrate im Script nun auch auf 8s erhöht, was ebenfalls funktioniert - aber es kommt mir irgendwie so vor, als würden die aktuellen Arbeitsleistungen in Watt nicht passend aktualisiert: es werden teilweise über 3 Aktualisierungen hinweg dieselben Werte angezeigt, während die FB bei jeder Aktualisierung einen anderen Wert berichtet, was mir auch realistischer erscheint.

Kann da noch irgendwo ein Knoten sein?

Btw: finde die Idee deines neuen Scripts super! Bei meinen drei DECT200 mit fixen Anwendungsszenarien braucht das aber noch nicht zum Zuge kommen - aber ich hoffe, dass mehr IPPF-User das hier finden und dir die Motivation liefern, das Ding weiter zu entwickeln!
 
Zuletzt bearbeitet:

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
@PCMor:

Mit der Watt-Aktualisierung sehe ich auch immer wieder (habe ja 8 DECT200 und 1 PL546E), dass hier einige Aufrufe lang zu niedrige Werte von der Fritzbox-Funktion zurückgeliefert werden. Die Werte für alle Steckdosen werden durch einen Request an die Fritzbox in einer simpleXML zurückgeliefert und dann erst von meinem Script ausgewertet und angezeigt. Bei der PL546E braucht es sogar immer mehrere Aufrufe, bis überhaupt ein vernünftiger Wert in der simpleXML vorzufinden ist. Das macht auch das Schaltscript von mir, wenn es nach Watt schalten soll, recht schwierig. Ich hoffe, dass da bald die Firmware der Box nochmal überarbeitet wird. Leider lässt sich von meinem Script her das nicht beeinflussen.

Eine Sache könnte es noch sein, dass die Daten beim Request in den Cache des Servers geladen und "intelligenterweise" (eher dummerweise) vom PHP-Interpreter von dort immer nochmal eingelesen werden, statt sie wirklich neu zu laden. Ich schaue mir das genau an und melde, wenn es da neue Erkenntnisse dazu gibt.

Wen es generell interessiert: Der folgende Aufruf liefert das simpleXML
Code:
http://fritz.box/webservices/homeautoswitch.lua?getdevicelistinfos
Es ist ein Multiarray mit allen Werten der Smart Home Geräte in einem simpleXML-Aufbau, welches dann z. B. mit PHP zerlegt und ausgewertet werden kann.

Das mit dem neuen Script läuft bei mir übrigens seit einigen Tagen ohne Probleme. Alle Steckdosen werden einwandfrei geschaltet. Mal sehen, ob es noch "Schaltideen" gibt.
 

JL3

Aktives Mitglied
Mitglied seit
4 Dez 2010
Beiträge
1,975
Punkte für Reaktionen
6
Punkte
38
Neue SmartHome Version 3.25.3014
- kleinere Anzeigefehler behoben

--------------------------------------------------------------------------------------------------------------------

Außerdem sind experimentell zwei Scripte dabei, die wie schon in Post #9 beschrieben mittels Cron-Job und serverseitigem, minütlichem Aufruf der smarthomeauto.php per php-Parser automatisch beliebige Schaltungen der Steckdosen nach Zeitpunkt, astronomisch mit beliebiger minütlicher Abweichung vor oder nach Sonnenauf-/-untergang, Schaltzustand der oder einer anderen Dose oder nach Wattverbrauch der oder einer anderen Dose vornimmt. Hier zwei Bilder der Info-Anzeige des Schaltscripts und der GUI zum eleganten festlegen der Schaltzeiten. Hierbei können beliebig viele Schaltvoränge mit beliebig vielen Schalttypen festgelegt werden. Schaltvorgänge bestehen entweder aus ein oder aus. Dadurch ergibt sich eine hohe Flexibilität. Man kann Beispielsweise mit einem Schaltvorgang astronomisch jeden Donnerstag 20 Min. vor Sonnenuntergang eine Dose einschalten. Mit einem zweiten Schaltvorgang bestimmt man, dass die Dose am Donnerstag um 22 Uhr ausgeschaltet wird. Mit einem weiteren Schaltvorgang bestimmt man, dass die selbe Dose eingeschaltet wird, wenn eine andere weniger als 20 Watt verbraucht. Datums und Zeitangaben können mit Platzhaltern aufgefüllt werden, sodass eine Angabe eines Schaltvorgangs bei der Zeit "**:00" hier jede volle Stunde heißt.

Die Dateien smarthomeauto.php und smarthomeautoui.php sind wie gesagt experimentell und benötigen zum korrekten Arbeiten Zugriff auf den Webserver zum Einrichten des Cron-Jobs. Bei mir läuft das Ganze direkt auf der Fritzbox. Ich empfehle diese beiden Dateien nur erfahrenen Usern zum Ausprobieren, die sich mit der Materie gut auskennen.

Nachtrag:

Um direkt auf der Fritzbox das gesamte Szenario lauffähig zu bekommen, muss man auf sie folgende Komponenten (per Telnet) kopieren:
* Apache-Server mit PHP 5.2 oder höher (z. B.: https://www.fritzmod.net/modification/apache/installation/ ) entsprechend des Prozessors des Fritzbox-Models auswählen
* Bussybox mit cron-Unterstützung (gibt es auch bei obigem Link oder googeln; auch hier auf den Prozessor achten)

Die Dateien apache.conf und php.ini müssen entsprechend den jeweiligen Gegebenheiten angepasst werden.
Die crontab für den Busybox-crond muss erstellt werden. Beispiel:
Code:
* * * * * /var/media/ftp/cron/busybox sh /var/media/ftp/cron/scripte/shstart.sh
Die Datei shstart.sh ist dann ein Shellscript, welches den eigentlichen PHP-Parseraufruf enthält. Beispiel:
Code:
#!/bin/sh
# Smart Home HGR zur automatischen Schaltsteuerung
/var/media/ftp/server/apache/cgi-bin/php -f /var/media/ftp/USBSTICKNAME/myweb/smarthome/smarthomeauto.php
Der ganze Nachtrag soll keine Schritt für Schritt Bastelanleitung sein, sondern aufzeigen, welche Komponenten man in welchem Zusammenhang benötigt. Danach ist je nach gewählter Komponente noch ein wenig an Bastelei und Anpassung der Konfigurationen nötig. Es wäre schwierig dies für alle Konstellationen und Eventualitäten aufzuführen, Doch hier hilft das Internet gut weiter, da - wenn Fehlermeldungen auftreten - dort mögliche Problemlösungen aufgezeigt werden. Nicht vergessen auch in den beiden php-Scripten u. a. FB-Adresse (Name oder IP), Benutzer, Kennwort, Längen- und Breitengrad anzupassen.

Bilder zur WebGUI im Post #1
 
Zuletzt bearbeitet:

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,030
Beiträge
2,018,086
Mitglieder
349,308
Neuestes Mitglied
UweMe