SensorAndSwitch Haus-Automation auf Webserver-Basis

Muss mich da auch nochmal einklinken.

Kannst du die (System-)Zeit/Datum nicht noch fest einbauen?

Und (wie) ist es möglich den letzten Anrufer aus Fritzbox anzeigen zu lassen?
 
:doktor:
wehavemorefun.de schrieb:
Will man den Zeitpunkt des ersten und letzten Telefonats in der Anrufliste ausgeben geht man so vor:

$ ctlmgr_ctl r telcfg settings/Journal/count # 231 Einträge im Array
231

$ ctlmgr_ctl r telcfg settings/Journal0/Date # Neuester Eintrag
10.02.12 13:19

$ ctlmgr_ctl r telcfg settings/Journal230/Date # Ältester Eintrag
29.11.11 13:44
Quelle
Von der Logik her also immer...
Code:
ctlmgr_ctl r telcfg settings/Journal0/Number
Das scheint veraltet zu sein, denn auf meiner 7360SL kommt da nichts.
Auf der Box selber sieht die vielversprechendste Adresse so aus: /var/flash/fonctrl
Immerhin: XML
Bei AVM XML sollte allerdings dieser "Knick" in der Definition beachtet werden...
HTML:
<?xml
version="1.0" encoding="iso-8859-1">
 
Zuletzt bearbeitet:
Auf der Box selber sieht die vielversprechendste Adresse so aus: /var/flash/fonctrl
Immerhin: XML
Bei AVM XML sollte allerdings dieser "Knick" in der Definition beachtet werden...
HTML:
<?xml
version="1.0" encoding="iso-8859-1">

Das ist ein sehr seltsames XML.........

Aber daraus ließe sich was basteln......
Der erste Eintrag nach dem XML-Kram ist der letzte Anruf.
 
Ja, wohlgeformt wäre...
HTML:
<?xml version="1.0" encoding="UTF-8"?>
...der Rest ist aber Ok.

Nee, doch nicht, was nach <person> kommt mag der XML Parser auch nicht.
 
Zuletzt bearbeitet:
Lässt sich irgendwie mit simpleXML nicht einlesen. Na egal, muss eh erst noch eine andere Baustelle erledigen. Mit dem Delay ist das eine unangenehme Sache. Da das Script sich ja zwischen den Cron-Aufrufen nichts merken kann. Außerdem ist die Frage noch ungeklärt, ob das Delay jede Minute bis Ablauf des Delays die Bedingung prüfen soll, ob sie noch erfüllt ist, oder ob am Ende des Delays die Bedingung passen muss.

Meine Güte, ich glaube da muss HarryHase nochmal sagen, was er damals damit meinte und wie es mehr Sinn macht.

Ich mach für heute Schluss.:weg: bin weg
 
Ich glaub ich verstehe.
Sowas wie "globale Variablen".
Dazu fällt mir mindestens fopen() ein.
Aber, wenns nicht sooo zeitkritisch ist,
und weil es mit in der PHP Binary ist als PDO: SQLite3
db.php
PHP:
<?php
date_default_timezone_set('Europe/Berlin');
$strDatenbank = 'sqlite:/var/media/NEW_LINK/sensorandswitch/sensorandswitch.db3';
$dbh = new PDO($strDatenbank);
?>
...da könnten zum Beispiel Seitenbesuche geloggt werden...
log.php
PHP:
<?php
require_once("db.php");
try {
$count = $dbh->exec("CREATE TABLE IF NOT EXISTS besucher (Hits INTEGER PRIMARY KEY, Zeit VARCHAR(255), IP VARCHAR(255), Agent VARCHAR(255))");
$count = $dbh->exec("INSERT INTO besucher (Zeit, IP, Agent) VALUES ('$_SERVER[REQUEST_TIME]','$_SERVER[REMOTE_ADDR]','$_SERVER[HTTP_USER_AGENT]')");
$dbh = null;
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
...weil es ein einfaches Beispiel ist. ;)
Wenn du es testen magst, dann die sensorandswitch.db3 vorher mit...
log.php (erster Aufruf erstellt nichtvorhandene Datenbank und Tabelle)
...erstellen.
Die test.php benötigt nur ein...
PHP:
require_once("log.php");
Anzeigen (vorher log.php ein paar mal ausführen) mit,
zum Beispiel...
besucher.php
PHP:
<?php
$thisPage = "Besucher";
require_once("db.php");
try {
$sth = $dbh->prepare('SELECT * FROM besucher ORDER BY "Hits" DESC');
$sth->execute();
echo '<table border="1" style="background:fixed 0% 0% repeat olive url(/rte/img/bg.jpg);table-layout:fixed;border:3px double olive;border-collapse:inherit;border-spacing:3px 5px;">
<caption>Besucher</caption>
<thead><tr><th>Hits</th><th>Zeit</th><th>Client</th><th>User-Agent</th></tr></thead>
<tfoot><tr><td>Hits</td><td>Zeit</td><td>Client</td><td>User-Agent</td></tr></tfoot>
';
while($Zeile = $sth->fetch(PDO::FETCH_ASSOC)) {
echo '<tbody><tr><td>'.$Zeile['Hits'].'</td><td>'.date('r', $Zeile["Zeit"]).'</td><td>'.$Zeile['IP'].'</td><td>'.$Zeile["Agent"].'</td></tr></tbody>';
}
echo '</table>';
$dbh = null;
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
...das sieht dann ungefähr so aus...
sas_db_01.jpg
:rolleyes:...gute Nacht...
 
Zuletzt bearbeitet:
Moins

Ach dtrieb, das steht doch alles hier im Thread.
Ein bischen mitdenken bitte.

Also, auf einem Linuxgastsystem (wo der Webserver läuft) reicht dieses Skript.
Benötigt werden die Linuxkommandos: printf und uptime

pseudofritzboxzeit.php
(Weil bei mir das Gastsystem die Fritz!Box ist, busybox enthält: printf)
PHP:
<?php
if ($_GET["info"]=="status") {
$Status=shell_exec('printf "%s %s %s %s %s</br>" $(uptime)');
$Status="P#<div style='position:relative;top:-10px;text-align:center;font-size:18px;'>".$Status."</div>*HTML#";
}
echo $Status;
?>
(JL3 Variante: SaS Style formatiert)
Da es "nur" ein Sensor ist, antwortet es auch nur auf: pseudofritzboxzeit.php?info=status
 
Zuletzt bearbeitet:
Noch mal eine Idee, aber wirklich erst mal als Diskussion sehen:

1) kann man auch Sensoren wieder ausblenden, die nicht gesehen werden sollen
2) das auch noch benutzerabhängig machen?

Nur wieder so eine wirre Idee von mir ... feuer frei ...
 
Pseudogeräte/sensoren ein/ausblenden:
Gibt es schon.
Benenn mal eine aktive pseudo***.php um in: pseudoauto***.php

Benutzerabhängigkeit:
Setzt voraus, dass eine Benutzerverwaltung existiert.
Möglich, aber die müsste JL3 komplett neu "erfinden".
Angefangen mit:
sensorandswitch.db3 (SQLite3) Tabelle: benutzer: id,name,password,lastlogin
:rolleyes:



EDIT; Automatische Zustellung des Logs via EMail um 23.59: Erfolgreich


An die in der conf/sensorandswitch.conf angegebene PHP...
Code:
cat conf/sensorandswitch.conf|grep MAILPHP
MAILPHP=http://fritz.box:81/sensorandswitch/sasmail.php
 
Zuletzt bearbeitet:
Benutzerabhängig..... argggghhhhhhhhhhhhhh :mad::mad::mad::mad::mad::mad:

Spaß beiseite...... vielleicht bei Version 2.00. Da müssen alle Scripte komplett neu geschrieben werden.

ausgeblendete Pseudoschalter benötigen nur den Zusatz auto im Namen. Am besten am Ende: z. B. pseudotempauto.php wird nicht in sas angezeigt, kann aber in sasap zum Schalten verwendet werden.

Im Ordner pseudobeispiele ist eine nette info.txt mit vielen Tipps.

Aber zurück zum Delay:
@HarryHase: Wie war das nochmal gewesen? Wann soll er prüfen und am Ende, am Anfang, jede Minute oder ...... alles hat seine Vor- und Nachteile. Bitte nochmal darüber diskutieren, was Sinn macht.


Ach ganz nebenbei:
Labor 0.10.0232 ist draußen.
 
Ja! :cool:

bzw. ich meine das Datum und Uhrzeit auf der "Startseite" angezeigt werden.

Bei der nächsten Labor ist es drin :)
(Sogar mit Sommer- und Winterzeit-Indikator und Wochentag)
 
neue Anwendung:

Außenbeleuchtung soll nicht die ganze Nacht leuchten, sondern unregelmässig für eine gewisse Zeit in den dunklen Tagesstunden

Def:
S-Dose1: Außenbeleuchtung

Logik
-
1) S-Dose1 von 15 Minuten vor Sonnenuntergang bis 1 Stunde nach Sonnenuntergang an
2) S-Dose1 von 30 vor Sonnenaufgang bis 30 Minuten nach Sonnenaufgang an
3) wenn dunkel und nicht an, dann per Zufall anschalten für min 15 Minuten max 30 Minuten

-
damit ließe sich auch einen Fernsehsimulation während der Urlaubszeit bauen.

-
Mist ich muss noch Dosen bestellen ;)

das hatte ich mal dazu geschrieben, ich sehe hier 2 Anwendungen:

Verzögerung, wie den sleep in linux, also einfach eine gewisse Zeit warten bis die nächste Aktion aus der Kette ausgeführt wird oder aber wenn die Dose angeschaltet wurde, bzw. ist darf diese nicht vor x Minuten wieder ausgeschaltet werden. z.B. die Wärmepumpe, wenn die einmal angesprungen dann darf sie nicht sofort wieder im laufenden betrieb ausgeschaltet werden. Könnte man auch in eigenen Ketten abbilden, dann müsste man aber wissen wie lange eine Dose schon an ist.
 
Benutzerabhängig..... argggghhhhhhhhhhhhhh :mad::mad::mad::mad::mad::mad:

Spaß beiseite...... vielleicht bei Version 2.00. Da müssen alle Scripte komplett neu geschrieben werden.

kam mir ja nur mal so als Idee, hatte überlegt es erst gar nicht zu posten, da mir klar war dass es alles über den Haufen wirft ...

ausgeblendete Pseudoschalter benötigen nur den Zusatz auto im Namen. Am besten am Ende: z. B. pseudotempauto.php wird nicht in sas angezeigt, kann aber in sasap zum Schalten verwendet werden.

Im Ordner pseudobeispiele ist eine nette info.txt mit vielen Tipps.
schau ich mir an, aber ich wollte reguläre Schalter ausblenden, die meine Frau nicht sehen soll ... ;)

Ach ganz nebenbei:
Labor 0.10.0232 ist draußen.

wird die als update angeboten, dann habe ich noch einen Fehler, wird bei mir nicht angezeigt
 
Machbarkeitsstudie: SQLite3 Schaltzustandstabelle

pseudosqlite3.php
PHP:
<?php
error_reporting(0);
require_once "db.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')");
if ($_GET["info"]=="status") {
$sth = $dbh->prepare('SELECT * FROM pseudodevice ORDER BY "id" DESC');
$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("INSERT INTO pseudodevice (active) VALUES ('1')");
$sth = $dbh->prepare('SELECT * FROM pseudodevice ORDER BY "id" DESC');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status['active']=="1") {
echo "S#".trim($Status['active'])."#";
}}
if ($_GET["schalter"]=="0") {
$count = $dbh->exec("INSERT INTO pseudodevice (active) VALUES ('0')");
$sth = $dbh->prepare('SELECT * FROM pseudodevice ORDER BY "id" DESC');
$sth->execute();
$Status = $sth->fetch(PDO::FETCH_ASSOC);
if ($Status['active']=="0") {
echo "S#".trim($Status['active'])."#";
}}
exit;
?>
Noch nicht perfekt, weil INSERT anstatt UPDATE.
(Es wird immer der letzte/neuste Eintrag gewählt)

Im Prinzip wie: pseudoschalter.php
pseudosqlite3_an.jpgpseudosqlite3_aus.jpg
 
Zuletzt bearbeitet:
schau ich mir an, aber ich wollte reguläre Schalter ausblenden, die meine Frau nicht sehen soll ... ;)
Das heißt, reguläre DECT200....... oha, da müsste ich mir was überlegen...
wird die als update angeboten, dann habe ich noch einen Fehler, wird bei mir nicht angezeigt
Der Update wird einmal am Tag geprüft, oder wenn man in die Einstellungen wechselt :)

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
 
schau ich mir an, aber ich wollte reguläre Schalter ausblenden, die meine Frau nicht sehen soll ... ;)
Ist in der nächsten Version drin :)
Einfach in der Fritzbox bei der Steckdosennamensvergabe auto im Namen und weg ist sie.
 
Labor 0.10.0237 steht bereit.
Da ist dann Geräteausblenden und Zeit anzeigen mit drin.
 
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.