SensorAndSwitch Haus-Automation auf Webserver-Basis

Hab da auch noch eine Idee zum diskutieren:

Was halt ihr davon das die Seite automatisch erkennt ob man mit einem Mobil Browser unterwegs ist und ruft dann direkt die mobile Seite auf.
 
Bin ich doooooof oder klappt update erzwingen nicht?
 
Funktioniert einwandfrei... :gruebel:
 
Hab da auch noch eine Idee zum diskutieren:

Was halt ihr davon das die Seite automatisch erkennt ob man mit einem Mobil Browser unterwegs ist und ruft dann direkt die mobile Seite auf.

Nein, die mobile Seite wird eh bei der Final rausgenommen.

Ich mag das auch nicht bei den Fritzbox-Seiten, da die Mobile-Seiten immer eine abgespeckte Version sind und nie das drauf, was man will. Manche verweigern durch diesen Automatismus, überhaupt auf die normalen Seiten zu gelangen. Also grundsätzlich nein. Wer es für sich einbauen will, der kann es gerne tun. ;)
 
Zuletzt bearbeitet:
... nur ein Schreibfehler auf der Update-Seite

"SensorAndSwitch Update V 0.10.0203 (C)2014 BlueDragon"
 
nein, das ist die Version der Updatedatei. Drunter steht von wo nach wo upgedated wird. ;)

Das kommt daher, weil diese als einzige vollkommen eigenständig ist und somit beim Update mit nichts kollidieren kann. Die ändere ich nur, wenn ich da wirklich was da dran umstellen muss.
 
@koyaanisqatsi:

#587
"log.php" bei aufruf auf der Konsole kommt:

# /var/media/ftp/SanDisk-Cruzer-01/apache2/cgi-bin/php-cgi /var/media/ftp/SanDisk-Cruzer-01/apache2/htdocs/log.php
PHP Notice: Undefined index: REMOTE_ADDR in /var/media/ftp/SanDisk-Cruzer-01/apache2/htdocs/log.php on line 5
PHP Notice: Undefined index: HTTP_USER_AGENT in /var/media/ftp/SanDisk-Cruzer-01/apache2/htdocs/log.php on line 5
X-Powered-By: PHP/5.5.14
Content-type: text/html
#


besuche.php liefert aber trotzdem ein Ergebnis, nur bei der "pseudosqlite3.php" kommt nichts.
 
log.php
Werte die nur in einer Webserverumgebung gültig sind,
können auf Kommandozeilenebene nicht ausgewertet werden.
Daher das: Notice
Diese Werte fehlen dann in der Tabelle.
Daran kannst/könntest du zum Beispiel erkennen welche sasap.php Aufrufe von cron kommen.


pseudosqlite3.php
Die Tabelle...
pseudodevice
...muss einmal...
PHP:
$count = $dbh->exec("CREATE TABLE IF NOT EXISTS pseudodevice (id INTEGER PRIMARY KEY, active VARCHAR(255))");
$count = $dbh->exec("INSERT INTO pseudodevice (active) VALUES ('1')");
...erstellt werden um für...
Code:
pseudosqlite3.php?info=status
...einen Wert zu liefern.
Dann muss es wieder kommentiert werden...
PHP:
//$count = $dbh->exec("CREATE TABLE IF NOT EXISTS pseudodevice (id INTEGER PRIMARY KEY, active VARCHAR(255))");
//$count = $dbh->exec("INSERT INTO pseudodevice (active) VALUES ('1')");
...wei ab dann...
Code:
pseudosqlite3.php?schalter=0
und
Code:
pseudosqlite3.php?schalter=1
...die Datenbanktabelle pseudodevice munter mit Datensätze vollschreibt.

1. pseudosqlite3.php?info=status = liest aus der (existierenden) Tabelle pseudodevice
2. pseudosqlite3.php?schalter=0 = schreibt und liest aus der Tabelle pseudodevice
3. pseudosqlite3.php?schalter=1 = schreibt und liest aus der Tabelle pseudodevice

Wie schon geschrieben...
"Nur eine Machbarkeitsstudie"
Das Potenzial ist aber gewaltig.
 
Zuletzt bearbeitet:
Hier zum sas-Thread:

Der hat sich ja überschnell gefüllt, wenn ich sehe, dass wir bereits über Post #600 sind. Natürlich wird das langsam etwas unübersichtlich. Ich habe schon den ein oder anderen Vorschlag oder auch Fehlermeldung übersehen.

Irgendwann wurde es hier auch schon einmal vorgeschlagen, das Ganze hier etwas aufzusplitten.

Mein Vorschlag zur Splittung wäre:
  • Installation und Update
  • Weiterentwicklung und Fehler
  • PseudoGeräte-Entwicklung
Installation und Update umfasst die Webserverthematik, Update, Updateprobleme, alles, dass man sas zum Laufen bekommt
Weiterentwicklung und Fehler umfasst dann hier den ehemaligen Thread mit neuen Ideen für die Grund-Scripte von sas und sasap, sowie Fehler, die sich daraus ergeben
PseudoGeräte-Entwicklung ist inzwischen doch sehr umfangreich geworden und sollte daher auch getrennt zur sas-Entwicklung stehen. Wenn ich sehe, was hier schon alles an PseudoGeräten zu finden ist. Es würde dann neue oder spezielle Pseudogeräte und Fehler oder Probleme mit diesen beinhalten.

Was haltet ihr davon? Es würde den inzwischen doch stark überladenen Thread etwas entlasten. Allerdings weiß ich nicht, was hier die Moderatoren davon halten, wenn es plötzlich drei Threads gibt.
 
...
Zum Delay:
das bekommt jede SCHID verpasst. Nur war meine Frage:
prüfen -> trifft zu -> warten -> schalten
oder
warten -> prüfen -> trifft zu -> schalten
oder
prüfen -> trifft zu -> warten -> prüfen -> trifft immer noch zu -> schalten
oder
prüfen -> trifft zu -> jede Minute, bis warten um ist -> schalten

warten -> prüfen -> trifft zu -> schalten


wobei ich das was ich im Kopf habe auch anders ginge
 
@JL3: Vorschlag, wie vorgeschlagen, stimm ich zu.

@eDonkey: Klappt es jetzt? Trau dich ruhig zu antworten.
UPDATE: Test auf pseudodevice Tabelle, gegebenenfalls erstellen.
pseudosqlite3.php
PHP:
<?php
error_reporting(1);
require_once "db.php";
$count = $dbh->exec("CREATE TABLE IF NOT EXISTS pseudodevice (id INTEGER PRIMARY KEY, active VARCHAR(255))");
$sth = $dbh->prepare('SELECT id FROM pseudodevice WHERE id = 1');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status=="") {
$count = $dbh->exec("INSERT INTO pseudodevice (active) VALUES ('0')");
}
if ($_GET["info"]=="status") {
$sth = $dbh->prepare('SELECT active FROM pseudodevice WHERE id = 1');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status['active']=="0") {
echo "S#".trim($Status['active'])."#";
}
if ($Status['active']=="1") {
echo "S#".trim($Status['active'])."#";
}}
if ($_GET["schalter"]=="1") {
$count = $dbh->exec("UPDATE pseudodevice SET active = '1' WHERE id = 1");
$sth = $dbh->prepare('SELECT active FROM pseudodevice WHERE id = 1');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status['active']=="1") {
echo "S#".trim($Status['active'])."#";
}}
if ($_GET["schalter"]=="0") {
$count = $dbh->exec("UPDATE pseudodevice SET active = '0' WHERE id = 1");
$sth = $dbh->prepare('SELECT active FROM pseudodevice WHERE id = 1');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status['active']=="0") {
echo "S#".trim($Status['active'])."#";
}}
exit;
?>
Es wird auch nur der 1. Tabelleneintrag erstellt/upgedatet.
(Da sieht man auch den Unterschied beider Methoden)
Dieser erste Eintrag (active) bekommt am Anfang den Wert: 0
Diese pseudosqlite3.php und die log.php erstellen also Datenbank und Tabellen,
wenn sie nicht vorhanden sind, automatisch.

Die Splittung wird bestimmt erst ab Post #1000 umgesetzt.
:rolleyes:
 
Zuletzt bearbeitet:
Die Splittung wird bestimmt erst ab Post #1000 umgesetzt.
:rolleyes:

wird ja nicht mehr lange dauern ;)

Was haltet ihr davon? Es würde den inzwischen doch stark überladenen Thread etwas entlasten. Allerdings weiß ich nicht, was hier die Moderatoren davon halten, wenn es plötzlich drei Threads gibt.

finde ich okay; Wenn die Mods erkennen wie sich das ausweitet dann könnte es ein eigener Bereich werden, dann ist eh eine Struktur notwendig. Da im PV Forum es jetzt auch steht denke ich werden wir eh bald Zuwachs bekommen. Die Anwendungen sind durch die Ketten und Pseudoschalter super zu gestalten
 
Sobald die Final 1.00 fertig ist, starte ich die drei Threads. Ich denke ab da macht es erst Sinn. Den Thread werde ich dann wohl zurück zu dem alten SmartHome benennen und beenden mit Link auf SensorAndSwitch als Nachfolger. Wer dazu noch Anregungen und Ideen hat, posten, denn bis die 1.00 kommt, wird es noch einen Moment dauern. Schließlich soll die auch möglichst fehlerfrei sein und alles beinhalten, was gewünscht war.

@HarryHase: Im Prinzip kannst du dir ein PseudoGerät basteln, was eine DECT200 ein- und nach der gewünschten Zeitspanne ausschaltet. sasap startet das PseudoGeräte-Script, das über Shell_exec das Script startet, welches den Schaltvorgang startet und nicht auf Rückantwort wartet, der eigenständige Prozess dann nach der gewünschten Zeitspanne auch das Ausschalten vornimmt. Das PseudoGeräte-Script meldet dagegen gleich seinen "Erfolg" zurück und fertig. Funktionieren würde es so. :)
Klappt es denn mit dem DECT200-Verstecken? (Gerätename in der Fritzbox um "auto" ergänzen und weg sind sie in der WebGUI) Das geht jetzt so mit ALLEN Geräten.
Im PV Forum? In welchem?
 
...
Klappt es denn mit dem DECT200-Verstecken? (Gerätename in der Fritzbox um "auto" ergänzen und weg sind sie in der WebGUI) Das geht jetzt so mit ALLEN Geräten.
Im PV Forum? In welchem?

Das klappt perfekt, kann ich ja ein paar Dosen kaufen ohne dass meine frau die Nase dran bekommt :)

Wie viele gehen eigentlich an einer Fritzbox?
 
Wir sollten auch mal einen Geräte Thread machen, also welche Dosen wir empfehlen, wo es gerade Angebote gibt, was es sonst noch für Sensoren eingebunden sind und immer einen Preis dabei, dann hat man eine Orientierung, eine IP Dose würde mich ja auch noch mal reizen .. einfach nur so ..
 
Nun, angeblich ist bei 10 DECT200 Schluss. Dann kannst du lt. AVM aber beliebig viele 546E dranhängen, da die über IP ansprechbar sind. Hab ja außerdem schon ein PseudoGeräte-Script für Edimax-Dosen drin. Läuft bei einem Benutzer hier.

Die 546E kann auch mal als Schaltbasis für die FritzDosen dienen.

Hab jetzt auch noch 2 DECT200 bestellt. Dann bin ich am Limit. Im Internet habe ich allerdings irgendwo gelesen, dass auch schon Leute mehr als 10 DECT200 an eine Fritzbox angemeldet haben. Es wäre sinnvoll, wenn AVM dies auch offiziell erweitert. denn so steckt das Smart Home zu stark in den Kinderschuhen. Den starren Schaltkram der Firmware brauchen wir ja nicht. Es genügt, wenn die Dose erkannt wird und sie sich ansteuern und auslesen lässt.

Ich frage mich sowieso, warum AVM auf ein im Vergleich so starres Schaltkonzept gebaut hat. Das war der eigentliche Grund "damals" für dieses Script.

Theoretisch funktioniert ja jedes Gerät, was irgendwie über URL ansprechbar ist. Ein Fall von PseudoGerät liest den Status und damit den Wert seiner Anlage über die Grafik eine Homepageseite aus. Das war ein bisschen knifflig, aber im Prinzip geht wirklich alles.

Die große Geräteübersicht habe ich allerdings nicht. Bei mir "geistern" nur Fritz-Teile rum. :)
 
Zuletzt bearbeitet:
pseudowetter.php in nächster Labor (Achtung: Im pseudotemp.php und pseudotemp2.php sind Koordinatenfehler! Werden nächste Labor korrigiert sein und sich im Ordner pseudobeispiele befinden.)
wetter.png
Code:
<?php

	/*
		+---------------------------------------------------------------------+
		|                                                                     |
		|   SensorAndSwitch Automation Pro                                    |
		|   PseudoGeräte-Script                                               |
		|   ===============================================================   |
		|   -> Wetter                                                         |
		|      openweathermap.org                                             |
		|      Informationen von obiger Homepage für den Ort, der             |
		|      anhand der in den Einstellungen eingelesenen Längen- und       |
		|      Breitengraden ermittelt wurde.                                 |
		|                                                                     |
		+---------------------------------------------------------------------+
	*/

	error_reporting(0);
	include "include/includedateien.php";
	include "include/includefunctions.php";
	include "include/includeconf.php";
	include "include/includeconfig.php";
	include "include/includedefine.php";
	$url="http://api.openweathermap.org/data/2.5/weather?lat=".str_replace(",",".",$Conf["BREITENGRAD"])."&lon=".str_replace(",",".",$Conf["LAENGENGRAD"])."&mode=xml&units=metric&lang=de";
	$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) {
		$Cont=simplexml_load_string($Status);
		$Temp=$Cont->temperature->attributes()->value;
		$Stadt=$Cont->city->attributes()->name;
		$Symbol='<img src="http://openweathermap.org/img/w/'.$Cont->weather->attributes()->icon.'.png">';
		$Wetter=$Cont->weather->attributes()->value;
		echo "P#".'<div style="font-size:14px;text-align:left;width:310px;position:relative;top:-20px;">'.$Symbol.'</div><div style="font-size:14px;text-align:left;width:310px;position:relative;top:-30px;left:0px;">'.$Wetter.'</div><div  style="text-align:right;width:310px;position:relative;top:-65px;">'.$Stadt.': '.$Temp.'°C</div>'."*HTML#";
	}
	else {
		echo "P##E##";
	}
	exit;
?>
 
Moin

Die neue Uhrzeit/Datumsanzeige wird trotz kleinster Schriftart (9px, FireFox-Einstellungen) umgebrochen.
uhrzeit_feature_01.jpg
Diese Fenomen tritt nur bei meinen Arbeitsplatzrechner auf. Zuhause ists Ok.
Auch umstellen von Monospace/Serif in der SaS-Einstellung bringt keine Besserung.

In Google-Chrome mit Schriftgröße 16px ist alles schick.
uhrzeit_feature_chrome_16px_01.jpg

Vielleicht für so harte Fälle wie FireFox einen Schalter in den SaS-Einstellungen
anbieten: [x] Uhrzeit/Datumsanzeige mit Sommer/Winterzeitsymbol anzeigen

EDIT: Umstellung von Schriftart Lucida zu Arial hat geholfen

pseudowetter.php
pseudowetter_01.jpg

Ich kann bei den Koordinaten eingeben was ich will,
als Standort bekomme ich entweder Tiergarten oder
Baumschulenweg. Aber nie: Neukölln
Das ist ein klarer Fall von Diskriminierung. :motz:
Bei wen kann ich mich da beschweren? ;)

Hm, hab die Koordinaten nicht verändert, jetzt steht da...
pseudowetter_02.jpg
...tektonische Plattenverschiebung?
Wohin wird Berlin wandern? Nach Osten?
Gerade wurde Kreuzberg angezeigt, es geht also momentan nach: Süden
Yeah :mrgreen:

Wer es nicht glaubt, hier die Koordinaten...
Breitengrad: 52,4697888
Längengrad: 13,4280066
 
Zuletzt bearbeitet:
Heute spinnt die Wetterseite. Mein Ort ist auch gewandert. :gruebel:
 
Wetterstationen wären der einzigst plausible Grund dafür.
Anstatt die Orstskoordinaten auszuwerten, wird der Ort der nächsten Wetterstation zurückgegeben.
 
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.