SensorAndSwitch Haus-Automation auf Webserver-Basis

@PCMor: In einer neuen Version des Scripts smarthome.php habe ich bereits im Kopfbereich eine Variable "AKTUALISIERUNG" angelegt, die dem Nutzer die Möglichkeit bietet die Aktualisierungsrate in Sekunden hier festzulegen, ohne den ganzen Code durchsuchen zu müssen.
Code:
	define ("VER","V 3.25.3017");
	define ("CPR","für die FB IPPF-User");
	
	define ("FB","http://fritz.box");
	define ("USER","hier Benutzer eintragen");
	define ("PASSWORD","hier Kennwort eintragen");

	define ("AKTUALISIERUNG","5");
Das Script ist noch nicht im obigen Download enthalten, kommt aber sicher in der nächsten Version, da ich nach wie vor nach den Abweichungen zwischen Fritzbox-Anzeige und simpleXML-Daten fahnde.

Bis jetzt leider ohne Erfolg. Daher noch eine Frage: Zeigt das Script gegenüber der Fritzbox-Seite immer zum gleichen Zeitpunkt gänzlich unterschiedliche Werte oder hinkt es hinterher? Ich habe bei einem längeren Test mit Firefox als Browser und ausgeschaltetem Browsercache bis auf die Aktualisierungsverzögerung jeweils identische Werte. Dazu verglich ich meine Scriptanzeige mit der Fritzboxseite "Heimnetz"->"Smart Home"->Tab "Energieanzeige" der Steckdose->Anzeige "Leistung aktuell Watt". Tritt die Diskrepanz bei dir immer noch auch mit Version 3.25.3014 auf und ist dein Browser-Cache an oder aus?

Ab der Version 3.50 plane ich einen Button "Einstellungen". Dort wird man bequem über Eingabefelder die Box-spezifischen Einstellungen vornehmen können, ohne jedesmal das Script selbst editieren zu müssen. Dadurch wird auch ein Update auf eine neue Version einfacher.
 
Neue SmartHome Version 3.25.3017
- Neue Script-Variable AKTUALISIERUNG zum Festlegen der Aktualisierungsrate in Sekunden im Kopf des Scripts hinzugefügt.

experimenteller Teil Smarthome Automation
- schwerwiegender Schaltfehler im experimentellen Script smarthomeauto.php behoben. Dieses erkannte bei der Verbrauchsschaltung eines Schaltvorgangs keine Einstellung "größer" oder "größer gleich" und schaltete willkürlich.
 
@PCMor: In einer neuen Version des Scripts smarthome.php habe ich bereits im Kopfbereich eine Variable "AKTUALISIERUNG" angelegt, die dem Nutzer die Möglichkeit bietet die Aktualisierungsrate in Sekunden hier festzulegen, ohne den ganzen Code durchsuchen zu müssen. (...)

Klasse, habe soeben die neue Variable in deiner neuen Version getestet, einwandfrei!

(...)Zeigt das Script gegenüber der Fritzbox-Seite immer zum gleichen Zeitpunkt gänzlich unterschiedliche Werte oder hinkt es hinterher? Ich habe bei einem längeren Test mit Firefox als Browser und ausgeschaltetem Browsercache bis auf die Aktualisierungsverzögerung jeweils identische Werte (...)

Habe auch gerade über zwei verschiedene parallel laufende Browser die Anzeige deines Scipts über Kreuz mit der der FritzBox verglichen (Firefox und Opera, bei beiden aktivierter Cache): dein Script ließ ich im 2s-Takt aktualisieren, die FB aktualsiert ihre Anzeige offenbar alle 10s.
Nach etwa 3min. des Zuschauens kann ich feststellen: die angezeigten Werte deines Scriptes entsprechen exakt denen der FB, allerdings ändern sie sich während der 10s, die die FB zur nächsten Aktualisierung wartet, auch im 2s-Takt nicht...

Welchen Takt suggeriert denn die simpleXML?

Ab der Version 3.50 plane ich einen Button "Einstellungen". Dort wird man bequem über Eingabefelder die Box-spezifischen Einstellungen vornehmen können, ohne jedesmal das Script selbst editieren zu müssen.

:nemma:

____________
Nachtrag:

Habe gerade, nachdem sowohl die FB-Seite als auch dein Script für einige Zeit geschlossen waren, nochmals (ausschließlich) die smarthome.php aufgerufen und dabei eine seltsame Beobachtung gemacht:
  • vom Script wurden direkt meine drei Adapter mit korrekten aktuellen Schaltzuständen (2x ein, 1x aus) und plausiblen Leistungswerten angezeigt
  • Aktualisierungsrate des Scripts: 4s
  • nach mehreren Minuten änderten sich die Werte der beiden aktiven DECT200 allerdings nicht, auch nicht im Nachkommabereich, was in Anbetracht der Tatsache, dass an beiden Dosen PCs hängen, eher ausgeschlossen sein dürfte
  • nachdem ich dann in einem zweiten Browser eine manuelle Anmeldung an der FB-GUI durchgeführt und mich dort zur Smarthome-Seite durchgeklickt hatte, zeigte diese dann aber dieselben Werte wie dein Script an - und 10s später änderten sich dann sowohl in der FB, als auch in deiner GUI wieder brav die Werte...
Hast du dafür eine Erklärung? Passt da vllt. irgendwas noch nicht ganz bei der Anfrage an die FB?
 
Zuletzt bearbeitet:
@PCMor: Je länger ich mich mit der Fritzbox-Firmware und deren Schnittstelle, die ja AVM auch dokumentiert hat, beschäftige, desto mehr kommt mir der Verdacht, dass die Aktualisierung in der WebGUI der Fritzbox die Dosen zu einem Dauerabgleich ihrer Werte (1-2s Takt) anregt. Der Zugriff über die Firmwareschnittstelle nach außen - wie zu meinem Script - macht dies nicht. Hier liegt die Aktualisierungsrate bei 2 Minuten für die Wattangabe. Daher die alten Werte, wenn nicht gleichzeitig die WebGUI der FB angezeigt wird. Hoffentlich gleicht dies AVM noch in einem späteren FW-Release an. Veilleicht finde ich auch die Stelle, wo die FB die Dosen zum Senden aktueller Werte animiert. Jedenfalls ist diese Funktion undokumentiert. Ich bleibe dran.

Nachtrag:
Die WebGUI der FB nutzt tatsächlich eine andere Abfrage und zwar gezielt pro angemeldeter Steckdose.
Code:
/net/home_auto_energy_view.lua?device=23&sub_tab=watt und dann die SessionID

Um aber wirklich genauere Angaben machen zu können, muss ich mir die lua direkt ansehen.

Nachtrag 2:
Nachdem ich mir das Ganze nochmal angeschaut habe, habe ich auch die Philosophie der Steckdosenschaltung der AVM-Programmierer erkannt, die dahintersteckt und die Problematik, die sich dahinter verbirgt. Ich versuche es einmal in einfachen Worten zu erläutern.
Schaltvorgänge wie Ein- oder Ausschalten sind einmalige Ereignisse. Hier bekommt die Dose über Funk (z. B. DECT) die Anweisung "geh an" und zurück kommt "bin an"; Funkverbindung beendet, Gleiches wenn die Dose anderweitig geschaltet wurde. Die Box merkt sich den Zustand. Fragt hier mein Script oder die Weboberfläche der Box den momentanen Zustand ab, so schaut die Box in ihrem Speicher nach, was vermerkt ist. Daher ist auf der Smart Home Übersicht der Box auch eine Liste der Schaltzustände aller Geräte.
Schwieriger wird es jetzt mit den sich eventuell ständig ändernden Watt-Angaben. Würden diese ständig aktuell gehalten werden müssen, so muss die Box diese auch ständig über Funk abfragen. Dies geschieht auch in der Weboberfläche aber immer nur für EIN Gerät, da sonst das Funkabfrageaufkommen sehr hoch wäre. Dadurch ist für ein Gerät auf dessen Seite ein 2s-aktueller Wert. Auf der Übersichtsseite fehlt dieser, weil sonst im 2s-Takt ALLE Geräte abgefragt werden müssten und dies Zeit und Sendeleistung kostet. Hier geht die Box den Kompromiss ein, nur alle 2 Minuten sich die Werte abzurufen und zu merken.
Theoretisch wäre es machbar, dass mein Script ständig alle Geräte abfragt, doch das würde das Script stark verlangsamen und ein wahres Funkfeuerwerk starten. Ob dies dann sinnvoll wäre, wage ich zu bezweifeln. Begnügen wir uns lieber mit einer 2 Minuten-Aktualisierung der Verbrauchswerte und einer hohen Aktualität der Schalterstellung.
Leider habe ich da keine besseren Nachrichten.
 
Zuletzt bearbeitet:
(...) Leider habe ich da keine besseren Nachrichten.

Völlig ok, so ein Funkfeuer wäre auch völliger Unsinn und widerspräche ohnehin dem eigentlichen Stromspargedanken.
Ich bin schon glücklich mit der einfachen und schnellen Schaltmöglichkeit, die hinreichend aktuelle Anzeige der Leistungswerte reicht mir auch völlig.
 
@PCMor und @alle:

Neue SmartHome Version 3.50.3521

* Einstellungsmaske zum leichten Erfassen und Abändern der gewählten Einstellungen. Aufrufbar vom WebUI durch Klick auf den Tool-Button im Kopfbereich oder beim Adressaufruf im Browser durch ...smarthome.php?info=einstellungen.

expermenteller Bereich SmartHome Automation

* nach wie vor nur experimentell nutzbar. Daten müssen im Script angepasst werden.
 
Zuletzt bearbeitet:
Neue SmartHome Version 3.50.3521

* Einstellungsmaske zum leichten Erfassen und Abändern der gewählten Einstellungen. (...)

Ahoi JL3,

gerade getestet: tut's bei mir leider nicht...
  • Aufruf der smarthome.php führt direkt zur Config-Maske
  • nach Eingabe der möglichen Daten (wobei: sollte hier nicht auch ein Feld für einen - wie bei mir - abweichenden HTTPS-Port hinein?) und Click auf den OK-Button passiert... nichts...
  • im Webserver-Verzeichnis wird auch keine smarthome.conf angelegt
Da scheint noch etwas zu fehlen - muss beizeiten doch mal versuchen, etwas PHP zu lernen, dann könnte ich in so einem Moment mal etwas mehr beitragen. :(
 
Bei einer Serveradresse mit https müsste man https://fritz.box:1234 (also den abweichenden Port nach dem Doppelpunkt hintendran.

(Im Moment könntest du nur das Script editieren und in Zeile 138 den Port von 443 auf deinen Port umstellen.)

Ich hänge mal das neue Script mit Korrekturversuch als Anhang an. Sag Bescheid, wenn das funktioniert. In dem Script wird auch schon das Kennwort verschlüsselt.

Eingabe bei Fritzboxadresse wäre dann z. B.: https://fritz.box:443

Download Post #1

Nachtrag: Wenn keine smarthome.conf angelegt wird, kann es sein, dass der Webserver das Anlegen von Dateien unterbindet. Da müsste in der httpd.conf des Servers das entsprechend gestattet werden. Bei meinen Webservern funktionierte es bereits von Installationsbegin an, aber einige Server sind da sehr restriktiv eingestellt.

Der Befehl kann dann nicht ausgeführt werden: http://php.net/manual/de/function.fopen.php
In der httpd.conf des Apache z. B.: php_admin_value safe_mode 0
 
Zuletzt bearbeitet:
Danke, funzt wieder :cool:

Auch die https://fb:123 tut's (hab's bisher immer direkt im Script editiert), ebenso wird das Passwort nicht im Klartext gespeichert.
A-pro-pros Speichern: habe im Webserververzeichnis (apache2 übrigens) eine leere smarthome.conf angelegt und mit Berechtigung 666 versehen - nun speichert's auch :p
 
Hallo,


Erst einmal Danke für die ganze Entwicklung !! Das ist wirklich TOP!
Jetzt zu meinem Anliegen,
in der neuen AVM OS Version kann aus den Fritz Dect 200 Geräten auch die Temperatur ausgelesen werden.
Kann das implementiert werden ?

Gruß
Loopys
 
@PCMor: Prima. Danke für die Rückmeldung.

@loopys: Die Temperatur wird in der WebGUI in der Spalte vor der Wattangabe angezeigt. Auf der Fritzbox muss allerdings eine 6.10er oder höher Firmware installiert sein (am besten 6.20), sonst wird die Temperatur der angeschlossenen Geräte nicht über die Fritzboxschnittstelle geliefert. Welche Fritzbox mit welcher FW-Version betrifft es denn?

Wie das WebGUI aussehen sollte, kann man im Post #1 im ersten Bild sich ansehen. Dort werden auch z. B. die FW-Versionsnummern der einzelnen Steckdosen angezeigt. Auch diese könnten sich noch nicht automatisch upgedated haben und nicht 3.33 als FW-Version installiert haben. Auch dann wird keine Temperatur geliefert. Wird denn in der Fritzbox-GUI (Heimnetz -> Smart Home) die Temperatur der Geräte angezeigt?
 
Zuletzt bearbeitet:
Hallo,

ich nutze die FB 7330 und FRITZ!OS 06.03. Ich habe keine neuere Version für die Box gefunden.

Gruß
Loopys
 
@loopys: Ich befürchte, dann müssen wir warten, bis AVM auch den älteren Fritzboxen ein Update spendiert. Das selbe Problem gibt es momentan auch mit der PLA546E, die auch als Fritzbox-Abfrageersatz dienen kann. Auch diese hat mit 6.05 keine Abfragemöglichkeit der Temperatur. Ab der Version 6.10 baute AVM einen Link bei der FB 7390 bzw. 7490 ein, der ein simpleXML mit einer Fülle an Informationen über alle angemeldeten Geräte lieferte. Leider existiert diese Möglichkeit wie gesagt nur bei den 6.10 oder größer Versionen.

Nachtrag: Für die 7312 gibts z. B. eine Labor 6.10. Wahrscheinlich wirds das auch bald für die 7330 geben. Hoffen wir es mal.
 
Zuletzt bearbeitet:
Hallo,

möcht hier auch nochmal DANKE sagen,

nachdem ich letzte Woche mehrere Stunden verbracht habe endlich mein Apache auf der FritzBox zu installieren, läuft jetzt wieder alles.

bei der Serverinstallation gab es einige Probleme.
hatte noch eine ältere Apache Version von der 7170, diese läuft aber nicht auf der 7272!
Hab dann festgestellt, dass man für die 7170 eine Mipsel und für die 7272 eine Mips Version braucht.
Man lernt halt nie aus.
Auch mit PHP wollten einige Versionen nicht richtig!
Aber mit viel Versuchen läuft es jetzt.
für diejenigen die auch Probleme haben, auf der FB 7170 / 7270 läuft
apache-1.3.41-modssl_php-5.4.3_sqlite-2.1
und auf der FB 7272 läuft
apache-2.2.17_php-5.4.3_mips_static

meine Server Probleme gehören sicher nicht unbedingt hier hin, sind aber eventuell für andere hilfreich.

Edit:

Was ich noch vergessen habe, warum ich den Server jetzt doch auf die FB gemacht habe.
Hab ja die 2 IP-Telefone mit großem Bildschirm und Browser.
die Browser sind zwar sehr einfach aber es funktioniert einwandfrei damit und muss nicht immer den Computer an haben.
 
Zuletzt bearbeitet:
@ws65: Es freut mich, dass alles zu deiner Zufriedenheit läuft. Inzwischen habe ich den ersten Post noch einmal überarbeitet, um auch darin Hilfestellung für nicht vorhandene Webserver zu geben.

Bei Gelegenheit werde ich auch eine Anleitung für eine Webserverinstallation direkt auf der Fritzbox hinzufügen und dafür auch deine Erkenntnisse, wenn es dir recht ist, dazu mit einfügen. Da ich nur eine 7390 im Einsatz habe, sind gerade Informationen zu anderen Fritzbox-Modellen sehr hilfreich. Besten Dank für diese Infos.

Den Webserver statt auf dem PC direkt auf der Fritzbox laufen zu haben bringt in der Tat eine Menge Vorteile. Zum Einen die ständige Verfügbarkeit, ohne dass zusätzlich der PC oder ein NAS laufen muss. Zum Anderen muss man auch nur an einer Stelle herumbasteln. Per TelNet ist es ja problemlos möglich auch ohne jedwede Installation oder Veränderung der Fritzbox, einen Webserver direkt auf einen an die Fritzbox angeschlossenen USB-Stick zu starten. (Einziger Nachteil: Macht die Box mal einen unerwarteten Reboot, ist auch der Webserver offline, bis er wieder per TelNet neu gestartet wird. Aber das ist - so finde ich - verkraftbar.)

So, genug OT, obwohl es eigentlich schon dazu beiträgt, das Script lauffähig zu machen.

PS: Bei mir auf der 7390 läuft der Apache 2.2.17 (apache-2.2.17_php-5.4.3_7390_static, mips) aber auch der 2.4.6 (apache2_v2.4.6_php_v5.5.14, mips) funktioniert, wobei letzterer den Prozessor mehr beansprucht. Anpassungen in den apache.conf, bzw. php.ini waren bei beiden nötig.
 
Post #1 nochmals überarbeitet und Umgebungsinstallation wie Webserver und Busybox auf der Fritzbox beschrieben.

Info: In der kommenden Version 3.60 wird die Smart Home Automation mit eingebunden sein. Die Einstellungen in smarthome.php werden um Längen- und Breitengradangabe, sowie Zenit erweitert, sodass auch diese Informationen von den Automationsscripten gelesen und genutzt werden können. Ein direktes Editieren der Scripte entfällt dann endgültig.
 
Zuletzt bearbeitet:
Hi.
Gibt es keine Möglichkeit direkt auf der 546E per Telnet zuzugreifen und einen cronjob mit Schaltzeiten zu erstellen? Auf dem Teil läuft doch auch Linux.
Muss das unbedingt über externen Webserver über php-Script erfolgen?
Möchte eine schaltbare Steckdose mit variablen Einstellungsmöglichkeiten für die Schaltzeiten, habe aber keine Fritzbox im LAN bzw. keinen Linux/Webserver am Laufen.
 
@zerokewl: Meines Wissens kann man auf der 546E von Hause aus kein Telnet aktivieren. Zumindest habe ich es noch nicht versucht. Allerdings hier Thema: Ein paar neue Probleme mit der 546E... und wie man sie hacken kann! wird es angedeutet, dass es funktioniert.

Falls du es ausprobieren willst und es tatsächlich funktionieren sollte, poste doch bitte, wie es funktioniert, dann kann ich es auch in Post #1 aufnehmen.
 
SmartHome Version 3.60.3611:
Ab dieser Version neu:
  • Kleinere Anzeigekorrekturen.
  • Die Smart Home Automation ist nun mit eingebunden. Die Einstellungen in smarthome.php wurden um Längen- und Breitengradangabe, sowie Zenit erweitert, sodass auch diese Informationen von allen Automationsscripten gelesen und genutzt werden können. Ein direktes Editieren der Scripte entfällt jetzt endgültig.

Download in Post #1
 
Hallo und erst einmal vielen Dank!
Läuft bei mir ohne Probleme!

Ich habe noch ein paar Ideen:

Anzeige falls eine neue Version online ist.

Benennen der Aktoren. (oder hab ich das übersehen?)

Link zu diesem Forumsbeitrag

Changelog?

Falls mir noch mehr einfällt poste ich es hier. ;)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.