SensorAndSwitch Haus-Automation auf Webserver-Basis

Sicher? Bei manchem schreib ich anfügen, bei manchem ersetzen...... von daher....... :mrgreen:
 
Hallo,
Das versuche ich zu beachten. :lach: "Das Schwarze sind die Buchstaben!" passt leider nicht immer :mrgreen:
 
der Block ist schon seit der Installation so drin, allerdings scheinbar am Schluss nur angefügt.

Hab jetzt mal nur den Block stehen lassen und den Rest gelöscht und den Pi neu gestartet.
 
Ich habe heute selbst meinen Pi2 nochmal von Grund auf neu aufgesetzt und dabei meine Anleitung benutzt. Keine Fehler und läuft tadellos...
 
Neue Version 3.00.2437
weitere Infos im
SensorAndSwitch Web
  • [2437] Umstellung des Geräte-Caches auf eine SQLite-Datenbank. Dadurch werden alle Schaltvorgänge kollisionsfrei auch bei mehreren simultan laufenden WebGUIs on the fly gelesen und geschrieben.
    Beim Raspberry Pi muss das SQLite-Modul dafür nachinstalliert werden:
    Code:
    apt-get install apache2 php5 libapache2-mod-php5 php5-curl php5-imap php5-sqlite
  • [2437] Robustes Datenbankhandling, was auch ein Löschen der Datenbank im aktiven Betrieb zulässt, da die Datenbank automatisch regeneriert wird.
  • [2437] Zuverlässigeres Anzeigen des aktuellen Schaltstatus, auch zwischen und während der SensorAndSwitch Automations-Refreshs.
 
Supi, habs drübergebügelt mit der Updatefunktion.
Hat erwartungsgemäss ohne Probleme geklappt. ;)

Frech, frei und smart, wie ich es nunmal bin, hab ich auch gleich die DB gekapert...
typenametbl_namerootpagesql
tablecachecache2CREATE TABLE cache (name VARCHAR(999) PRIMARY KEY, ts INTEGER, daten VARCHAR(999999999))
indexsqlite_autoindex_cache_1cache3
tablepseudodevicepseudodevice9CREATE TABLE pseudodevice (id INTEGER PRIMARY KEY, active VARCHAR(255), type VARCHAR(255), temp VARCHAR(255), watt VARCHAR(255), command VARCHAR(255), command0 VARCHAR(255), command1 VARCHAR(255))

DB == Wissen = Für Alle!
 
Zuletzt bearbeitet:
Im Prinzip kein Problem. Allerdings wenn ich bei Folgeversionen an der Datenbank was ändere, würde eine eigene Datenbank für dich im tmp-Verzeichnis mehr Sinn machen. Obwohl, vorab belasse ich sowieso die jetzige Struktur erst einmal so. ;)

Die Datenbank regeneriert sich übrigens automatisch, wenn man z. B. den Pi mal bootet und dadurch das tmp-Verzeichnis gelöscht wird. Auch ein Löschen während des Betriebes ist theoretisch möglich. Das Konstrukt ist sehr robust. :)
 
Yo, das macht nichts, denn meine Pseudos machen das genauso.
Hauptsache SaS stört sich nicht daran, das eins meiner Skripte die DB anlegt,
wenn sie nicht vorhanden ist.
Warten wirs mal ab.
 
Noch ein paar Hintergrundinformationen zum Inhalt des tmp-Verzeichnisses:

sensorandswitchgerarr.datasasap zeigt an, dass sasap aufgerufen wurde (und wird, sprich: cron funktioniert)
sensorandswitchbrain.data wird angelegt, wenn sasap sich Delay und Zufall für Schaltbedingungen merken muss
sensorandswitchgerarr.dataconf beinhaltet verschlüsselt die Konfiguration von sas und wird von sasap erstellt
sensorandswitchgerarr.dataalle ist die SQLite-Datenbank und wird von sasap erstellt und von sasap und sas gelesen und geschrieben, wobei sas nur seine eigenen Schaltänderungen schreibt
 
Zuletzt bearbeitet:
Yo, das macht nichts, denn meine Pseudos machen das genauso.
Hauptsache SaS stört sich nicht daran, das eins meiner Skripte die DB anlegt,
wenn sie nicht vorhanden ist.
Warten wirs mal ab.

sas prüft Vorhandensein und ob die Datei eine Datenbank ist. Wenn nein, wird die Datei gelöscht und die DB--Datei neu erstellt. Wenn ja, prüft er, ob die cache-Table existiert, sonst wird sie angelegt. Ansonsten bewegt sich sas nur in der cache-Table. Von daher dürfte es keine Kollisionsprobleme geben. Nur die Rechte der DB-Datei beim Anlegen - wenn sie zu gering sind - könnten Ärger geben.

Bei FB httpd und php-cgi läuft eh alles per root, auch sas und sasap.
Beim Pi läuft sas als www-data und sasap als root. Daher wird beim Anlegen via sasap sichergestellt, dass ausreichende Lese-/Schreibrechte existieren. ;)


-
Nachtrag:
Es gibt noch einen Anzeigefehler im sasapui beim Anlegen und Ändern eines Schaltdatensatzes, der aber keine Beeinträchtigung der Funktionalität hat. Wird in V 3.00.2461 korrigiert. Die unten angekündigte V 3.00.2458 hat diesen Anzeigefehler noch.
 
Zuletzt bearbeitet:
Neue Version 3.00.2458
weitere Infos im
SensorAndSwitch Web
  • [2458] Behebung eines Schaltproblems bei PseudoGeräteScripten, die Fritz-Box-Geräte, wie z. B. eine DECT200, eingebunden haben. Hier wurde fälschlicherweise der Datensatz des eingebundenen Gerätes und nicht des PseudoGeräteScripts aktualisiert.
  • [2458] Interne Bugfixes.
 
Neue Version 3.00.2461
weitere Infos im
SensorAndSwitch Web
  • [2461] Korrektur der Anzeige in SensorAndSwitch Automation UI, bei Anlegen, Ändern und Löschen eines neuen Schaltdatensatzes.
  • [2461] Interne Bugfixes.


-Da im Augenblick keine weiteren SAS-Versionen von mir geplant sind, kommt nun die noch angekündigte, fehlerbereinigte Fassung. Ebenfalls wurde das SAS-Web noch einmal im Bereich RaspberryPI überarbeitet und kleinere Korrekturen vorgenommen. Falls noch Fehler und/oder Ungenauigkeiten auftauchen sollten, bitte hier posten.

Viel Spaß beim Ausprobieren und PseudoScripte erstellen. ;)
 
... kurze Nachfrage:

Leider konnte ich hier keine 67 Seiten komplett durchlesen, Sorry dafür.
Es geht um folgendes Scenario:

PC erstellt eine Sicherung auf einer externe Festplatte, beide Geräte hängen an der gleichen Steckdose.
PC sendet nach Beendigung einen für 5 Minuten verzögerten Abschaltbefehl für die DECT 200, und fährt dann herunter.
Steckdose schaltet anschließend ab.

Soweit mein Plan. Die Frage ist nun ob sich das mit Deinem Programm realisieren lässt.
Der Webserver würde dann auf dem gleichen Rechner laufen, darf jedoch aus Sicherheitsgründen nicht von Aussen erreichbar sein.
Einen Webserver an der Fritz!Box zu betreiben, finde ich sicherheitstechnisch auch schon bedenklich, da das Fritz!Box Passwort ja darauf gespeichert werden muss, es sei denn er ist nur im lokalen Netz erreichbar.
Oder ist das verzögerte Schalten der Steckdose auch mit einem einfachen Batchbefehl realisierbar?

Gruß Jörg
 
Moin

Natürlich geht sowas mit SaS.
Nur kommt es natürlich auf das Betriebssystem des PCs an,
wie es letztendlich umgesetzt werden kann.
Das fängt beim Betriebssystem an, Linux oder Windows?
Und hört bei deinen Skripterfahrungen auf.

Denn eine vorgefertigte Lösung gibt es dafür nicht.
Das muss alles auf deine Gegebenheiten angepasst werden.
 
Windows-PC

Hallo und vielen Dank für die schnelle Rückantwort,

ja irgendwie dachte ich mir das schon das es dafür keine schnelle Lösung geben wird.
Scripterfahren habe ich zum Beispiel mit Autohotkey und den üblichen Batchdateien in Windows...


Gruß Jörg
 
Das hervorstechendste Problem bei einer Installation auf einen Windowswebserver ist der fehlende crond,
der auf Linuxinstallationen 1x pro Minute die sasap.php aufruft, damit die automatische Schaltung funktioniert.

Deswegen sollte für SaS eine Installation auf ein Linuxwebspace erfolgen.
Hier wird die Installation auf einen Raspberry Pi eindeutig den Vorzug gegeben.
Die verbrauchen nicht viel Strom und können 24/7 durchlaufen, wie der Router sozusagen.
Außerdem ist der automatische Start des Webservers gegeben, sollte der Pi doch mal neustarten.

Dann bliebe dennoch das Problem, wie auf dem Windows PC dann was ausgeführt werden kann.
Auf Anhieb fällt mir dazu der Telnet-Server ein, der auf Windows nachinstalliert werden müsste.
...mit dem könntest du so eine Art TCP Schalter, der auf einen Port hört und eine Batch ausführt, basteln.

Wenn das so reallisiert werden kann, könntest du den Windows PC sogar aufwecken lassen,
damit er irgendwas macht und sich anschliessend wieder runterfährt.
Auf Linuxsystemen geht sowas mit: ether-wake [MAC:von:pC]
 
Zuletzt bearbeitet:
...Danke

Angesichts der Tatsache das dass Verhälniss von Aufwand und Nutzen halbwegs sinnvoll sein sollte, werde ich dann wohl ganz die Finger davon lassen.
Es war halt nur so ein Gedanke.

Trotzdem vielen Dank für Deine Mühe...
 
@usetheworld: Das geht mit SAS, aber für diese ganz klar umrissene Aufgabe noch besser mit dem Backup-Programm selbst. Wenn du z. B. Acronis verwendest, kannst du als "Abschlussbefehl" eine Batch-Datei aufrufen oder einen curl absetzen, der deine DECT200 schaltet, ABER das Gerät sich selbst über Stromentzug ausschalten zu lassen, ist gefährlich. Die logische Festplattenstruktur nimmt dabei garantiert Schaden. Und auch moderne Festplatten schaffen es so nicht immer, ihre Schreib-/Leseköpfe korrekt zu parken. Ein Ausfall dieser Medien ist dann nur eine Frage der Zeit. Das ist dann ein teures Stromsparen.

Du kannst übrigens auch von einem PC, der selbst an der auszuschaltenden Steckdose hängt, keinen zeitverzögerten Impuls an die DECT200 geben. Also Szenarien wie etwa: Impuls an die DECT200 zum Ausschalten in 5 Minuten und jetzt Herunterfahren des PCs funktioniert nicht, denn der PC fährt runter und aus kann er nicht nach 5 Minuten einen Impuls senden. Da ist der Fehler schon im Denkansatz. Wie soll er noch etwas schalten, wenn er bereits heruntergefahren ist? Durch das Herunterfahren unterbrichst du ja den Schaltauftrag.

Batchbefehle zeitgesteuert kannst du auch über den Taskmanager von Windows realisieren. Aber für dein Vorhaben rate ich dir ab, dies umzusetzen. Du entziehst damit deinem PC während des laufenden Betriebs den Strom. Schlimmeres kann man mit seinem PC nicht anstellen.

Wenn du die Fritzbox als Webserver nutzt, so benutzt du ja nicht den Fritzbox-Webserver, sondern einen zweiten apache oder httpd. Von daher sind deine Sicherheitsbedenken nur relevant, wenn du Fremde in dein Heimnetz lässt.

Mit SAS könntest du dann dein Vorhaben umsetzen. Der PC fährt nach der Sicherung herunter und der Verbrauch an der DECT200 sinkt. Wird ein gewisser Wert erreicht, schaltet SAS die Dose aus, weil es davon ausgehen kann, dass die Geräte ordnungsgemäß heruntergefahren sind.

Eleganteste Variante ist tatsächlich ein Pi, der SAS dauerhaft ausführt.
 
Zuletzt bearbeitet:
@koyaanisqatsi: Die Geschichte mit der Datenbank hat mich auf eine total abstruse Idee gebracht. Daraufhin habe ich sasap getrennt in sasap(Schalten) und sasag(Geräteinfo holen) sasap läuft per cron 1x die Minute. sasag ruft sich immer wieder selbst per echtem curl-Befehl auf. Resultat: Die Datenbank wird immer schnellstmöglich aktualisiert. Dauert das Datenholen länger als eine Minute, stört das nicht mehr. sasap schaltet immer schnell und pünktlich, da es auch seine Daten aus der Datenbank holt und seine Schaltvorgänge wieder dorthin schreibt.

Die Version 3.50 läuft bei mir seit ein paar Minuten super im Test. :mrgreen:

Hab ich ein paar Posts vorher wirklich gesagt, dass die 3.00 vorerst die letzte Version ist? Ähem..... ;)
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,478
Beiträge
2,252,732
Mitglieder
374,253
Neuestes Mitglied
Sd26
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.