SensorAndSwitch Haus-Automation auf Webserver-Basis

Ja, normalen vi benutzen. Nicht: nvi
Der nvi (ein Skript) ist für die /var/flash Dateien. ;)
Aber ich seh schon, bei mir gibt es schon mit boxusr10 Ärger.
(Kein CSS und Bilder weil ihm das Verzeichnis nicht gehört)...u.s.w.
...CGI geht aber, wie ich vermutet habe. :mrgreen:
...aber keine ctlmgr_ctl Aufrufe.
Ich glaub der bekommt nur: /bin
...als Pfad.
Dann ctlmgr_ctl immer mit vollen (absoluten) Pfad aufrufen.
/usr/bin/ctlmgr_ctl
(für CGIs, auch in Post #413 verbessert)
 
Zuletzt bearbeitet:
Irgendwie will da nichts funktionieren. Muss ich irgendwann nochmal in Ruhe testen. Erstmal Danke. :)
 
Hi, habe endlich ein lauffähiges Apache mit PHP auf meiner Box und folgendes festgestellt:

sensorandswitch0100091labor frisch draufgezogen und nur Login Daten eingetragen, schalten der DECT200 problemlos, Update ausgeführt, kein schalten mehr möglich.

Gruß
 
ich bin am WE leider zu nichts gekommen und auch diese Woche sieht es wieder duster aus .. hoffentlich ist bald Weihnachten ...
 
@lessew: Fehler in der conf-Datei. Die Version 91 und die aktuelle sind da nicht kompatibel. Sorry, lösch deine sensorandswitch.conf und rufe sensorandswitch.php erneut auf.
 
ich bin am WE leider zu nichts gekommen und auch diese Woche sieht es wieder duster aus .. hoffentlich ist bald Weihnachten ...

Inzwischen hat sich hier viel getan. In der neuen SensorAndSwitch ist - bis auf Delay - alles integriert. Sogar PseudoGeräte aller Art. Das können Webseiten sein, die Temperatur liefern oder Fremdgeräteeinbindung, die sich über URL steuern lassen. Alles ist in jedem Script verfügbar. Lass dich überraschen. :)
 
Inzwischen habe ich die alte Labor 91 rausgeworfen, dass nicht nochmal diese zuerst installiert wird. Ein Test gerade eben zeigt, dass die 187 auch frisch installiert bei mir auf einem Testserver problemlos schaltet.

@lessew: Läuft es jetzt bei dir? Versuche ebenfalls noch einmal komplett mit der 187 aufzusetzen. Melde dich, ob es läuft oder noch Probleme gibt.
 
@JL3 leider nein, ich klicke schon nur auf den Button, es wird auch keine Ladeanimation (mittig links vom Logo) angezeigt

aber im Webinterfacetyp Eingeschränkter Zugriff*... funktioniert



@OFF DEM THEMA

Habe folgendes versucht:
pseudoaussentemp.php in pseudoMeineStadt.php umbenannt => funzt
pseudoaussentemp.php in pseudoNachbarStadt.php umbenannt und BreiGr/LängenGr von

$url="http://api.openweathermap.org/data/2.5/weather?lat=".$Conf["BREITENGRAD"]."&lon=".$Conf["LAENGENGRAD"]."&mode=xml&units=metric&lang=de";

in

$url="http://api.openweathermap.org/data/2.5/weather?lat=".$Conf["50"]."&lon=".$Conf["10"]."&mode=xml&units=metric&lang=de";

geändert und es zeigt mir eine andere Temp an als wenn ich 50°/10° in meinen Einstellungen stehen habe, d.h. pseudoMeineStadt.php zeigt eine andere Temp an als pseudoNachbarStadt.php, obwohl für beide 50°/10° gelten müsste. Hat jemand eine Idee?

Mein Gedanke ist einfach, wenn Glatteisgefahr dann überlege ich zufahren oder ggfls. die öffentlichen Verkehrsmittel zunutzen.



P.S.S Eine Idee: Die openweather api liefert doch mehr als nur die Temperatur, kann man die Windgeschwindigkeit/Wolkenstand(cloudy, rain, sunny, etc) Feuchtigkeit oder sogar Regen als Status bekommen. damit könnte man(n) doch unglaubliches realisieres. Ist halt nur an Anlehnung gedacht zudem was bisher umgesetzt wurde, ich denke da an Kettenschaltung.

GN8
 
Zuletzt bearbeitet:
Inzwischen habe ich die alte Labor 91 rausgeworfen

Das Update hat super funktioniert, ein Klick und es funzt..., bis auf das ich die Probleme mit DECT200 habe, selbst auf meiner VM wo ich es zu Beginn immer getestet habe und nix an der Konfig gemacht habe läuft es nicht mehr...
 
Das ist falsch:
Code:
$url="http://api.openweathermap.org/data/2.5/weather?lat=".$Conf["50"]."&lon=".$Conf["10"]."&mode=xml&units=metric&lang=de";

richtig wäre
Code:
$url="http://api.openweathermap.org/data/2.5/weather?lat=50&lon=10&mode=xml&units=metric&lang=de";
sonst nimmer er den Inhalt der $Conf-Variablen 50 und 10, was immer 0 sein müsste...

Hast du deinen Steckdosen in der Fritzbox Namen gegeben? Beinhalten die Leer- oder Sonderzeichen oder Umlaute?
 
Hab den Schaltfehler der DECT200 gefunden. Der Name darf keine Sonderzeichen haben. Ist jetzt korrigiert und funktioniert jetzt auch damit.

Labor 0.10.0199 steht bereit.
 
Hast du deinen Steckdosen in der Fritzbox Namen gegeben? Beinhalten die Leer- oder Sonderzeichen oder Umlaute?

OMG, jetzt ja, von: FRITZ!DECT 200 #1 auf spielwiese einen Adapter umbenannt und es läuft wieder!
 
OMG, jetzt ja, von: FRITZ!DECT 200 #1 auf spielwiese einen Adapter umbenannt und es läuft wieder!
Die neue Version kanns auch mit ! und # schalten. :)
So, das war jetzt meine 4. SensorAndSwicht-Nachtschicht, für heute mach ich dann Schluss. ;)
 
Heute in den Blitzangeboten bei Amazon die Fritz!DECT 200 .

Aber lasst mir auch noch ein paar übrig! ;)
 
Zuletzt bearbeitet:
@dtrieb

hab ich die Woche bei MediaMarkt auch für 45.-€ bekommen!
waren zwar mit 47,99 ausgezeichnet, aber an der Kasse wollten sie nur 45.-€ !
 
Heute in den Blitzangeboten bei Amazon die Fritz!DECT 200 .

Aber lasst mir auch noch ein paar übrig! ;)

Soviel zu dem Thema: Bei diesem Anbieter sind derzeit nur 3 Exemplare verfügbar. Möchten Sie eine größere Menge bestellen, kehren Sie bitte zur Produktseite zurück, um zu prüfen, ob ein weiterer Händler Ihre gewünschte Menge anbietet.


Ich bin bei Amazon PartnerNet, für jede gekaufte Dose über diesen Link würde ich ca. 4-6% Provision erhalten, ich würde es gerne an JL3 weiterleiten.

Cyber Monday Angebot für 39,99€ Versandkostenfrei

Gruß
 
Zuletzt bearbeitet:
Moins

Problem.
/cgi-bin/gastwlan.cgi
Code:
#!/bin/sh
echo 'Content-Type: text/plain
'
case ${QUERY_STRING} in
info=status) echo $(/usr/bin/ctlmgr_ctl r wlan settings/guest_ap_enabled) ;;
schalter=1) /usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 1 ; echo -n 1 ;;
schalter=0) /usr/bin/ctlmgr_ctl w wlan settings/guest_ap_enabled 0 ; echo -n 0 ;;
esac
#EOF
/sensorandswitch/pseudogastwlan.php
PHP:
<?php
$Status="";
$query="";
error_reporting(1);
echo "S";
if ($_GET["info"]=="status") {
$query="info=status";
}
if ($_GET["schalter"]=="1") {
$query="schalter=1";
}
if ($_GET["schalter"]=="0") {
$query="schalter=0";
}
$url="http://fritz.box:81/cgi-bin/gastwlan.cgi?".$query;
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$Status = curl_exec($ch);
curl_close($ch);
if ($Status) {
echo "#".$Status."#";
}
else {
echo "E#";
}
exit;
?>
Manuelles schalten über die CGI geht (info=status, schalter=0, schalter=1),
Über sensorandswitch.php kann ich es nur auschalten, wenn es an ist.
Einschalten geht nicht, weil der Link anzeigt...
Code:
http://fritz.box:81/sensorandswitch/sensorandswitch.php?info=ui&sortierung=keine&name=Gastwlan&schalter=aus
pseudogastwlan_01.jpg
...obwohl er eh schon aus ist. :confused: Was kann ich da machen?

Das pseudogastwlan.php funktioniert auch, wie in der...
/sensorandswitch/pseudobeispiele/info.txt
...gefordert, mit: ?info=status, ?schalter=1 oder 0

Und jetzt lass ich die Fritz!Box mal arbeiten um dass hier zu testen...
schaltbedingung_gastwlan_cputemp_01.jpgschaltstatus_gastwlan_cputemp_01.jpgsensorandswitch_gastwlan_cputemp_01.jpg
...
YES! - Sehr schön, dass funktioniert. :mrgreen:
schaltstatus_gastwlan_cputemp_02.jpgsensorandswitch_gastwlan_cputemp_02.jpg
Ein 2. Kettenstartglied schaltet es auch sauber wieder an (<60°).
 
Zuletzt bearbeitet:
Das wollte ich bei mir mal ausprobieren und es gab wieder einen "Internal Server Error". Woran kann das liegen? :gruebel:
 
Hab den Fritz!Box Apachen noch nie angefasst.
Vielleicht kann der einfach kein Shellskript-CGI?
Muss es Perl oder Python sein?
Oder einfach nicht aktiviert (httpd.conf) ?
Nicht das du vergessen hast die URL:port zu ändern...
pseudogastwlan.php
PHP:
$url="http://fritz.box:81/cgi-bin/gastwlan.cgi?".$query;
:rolleyes:

Vielleicht hilfts ja...
Beim busybox httpd kann ich bestimmen was durch einen Interpreter soll.
httpd.conf
Code:
# externals
*.php:/var/media/NEW_LINK/mips/php.sh   # run xxx.php through an interpreter
*.cgi:/bin/sh                   # :-)
 
Zuletzt bearbeitet:
@ koyaanisqatsi: Nein, das hab ich angepasst. Ich versuch es irgendwann nochmal mit einem anderen Webserver. Es gibt ja ein paar.

Zu dem Schaltverhalten deines gastwlan-Pseudo-Script:
Das macht sensorandswitch.php: Wenn man den Schaltbutton eines Gerätes anklickt, weiß er seinen gemerkten Status aus der Statusabfrage beim Aufruf. Hier erkennt er den Schaltwunsch (Schalter ist an, Schalter soll aus), aber er fragt sicherheitshalber erst nochmal den Schaltstatus ab. Danach schaltet er, wenn dieser dem Schaltvorgang entspricht (Schalter ist an, Schalter soll aus) und setzt so seinen Aufruf ab. Ist der Schalter schon aus, macht er nichts.
Das eine Anklicken besteht sozusagen aus zwei Aufrufen. info=status und schalter=1 oder 0.
Danach Fragt er nach der Aktualisierungszeit den neuen Status ab und zeigt diesen an.
Irgendwie macht er bei der Sicherheitsstatusabfrage entweder einen Fehler oder er hat ein Problem bei Ermitteln eines der beiden Statuszustände 0 oder 1.

Das nur, um mal die Logik zu verdeutlichen. Vielleicht hilfts bei der Fehlersuche.
Setz dir doch mal den pseudoschalter.php aus den pseudo-beispielen ins Verzeichnis, wo deine sensorandswitch.php drin ist und schau dir mal dessen Schaltverhalten an. Vielleicht kannst du den mal als Basis nehmen.

@lessew:
Ich bin bei Amazon PartnerNet, für jede gekaufte Dose über diesen Link würde ich ca. 4-6% Provision erhalten, ich würde es gerne an JL3 weiterleiten.
:) Wirklich sehr nett gemeint, aber ich bastel das hier just for fun, weil ichs ja selber gern für mich nutzen will. Nur wenn dann so ein Script schonmal da ist, dann kanns halt auch der eine oder andere Benutzer hier auch gebrauchen, denke ich und habs hier reingestellt, weil es hier im Forum auch schon den einen oder anderen wertvollen Tipp gerade in Sachen Fritzbox für mich gab. :)

Noch was zum Thema Umlaute/Sonderzeichen beim Geräte-Namen: Da bin ich endlich drauf gekommen, als du sagtest, dass die 91 keine Probleme macht, die neue aber schon. Ich habe ab der 167 das Schalten von AIN zu Name bei der Parameterübergabe verschoben, weil die neu eingeführten PseudoGeräte keine eindeutige AIN mehr besitzen. Die heissen alle "URL". Bei der Übergabe des Parameters per $_GET passiert das Unglück und es wird der Name verstümmelt, sodass das Script beim Vergleichen mit den eingelesenen Daten keine AIN mehr finden kann. Jetzt werden nur PseudoGeräte mit Name übergeben. Fritz-Geräte per AIN und deshalb geht es jetzt mit der neuesten Version wieder. Das nur zur Erklärung, was passiert war.
 
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.