SensorAndSwitch Haus-Automation auf Webserver-Basis

Nein auf einem Synology NAS. Und hast ja vorher auch geklappt.
 
So:

Cron läuft!
Temp-Verzeichnis hat Rechte 777!
sensorandswitchgerarr.datasasapbusy ist im Verzeichnis Temp aber in der Datei steht nichts.

Was kann ich jetzt noch machen?
 
sensorandswitchgerarr.datasasapbusy steht nur für die Dauer des Aufrufs im tmp/ und signalisiert, dass es gerade arbeitet. Die Datei ist leer und muss auch nach ein paar Sekunden wieder verschwinden. Wenn nicht, lösche die Datei selbst, denn sie blockiert die Abarbeitung von sasap, wenn die Datei noch existiert.
Vermutlich kann sasap deshalb die Cachedatei nicht schreiben.
 
Aber ich finde in den Schaltregeln immer noch keine Geräte.
 
Gibt es in tmp/ diese Datei? sensorandswitchgerarr.dataalle

Wenn ncht, dann lege sie händisch ohne Inhalt an und vergib auch 777 als Rechte.
 
Gibt es in tmp/ diese Datei? sensorandswitchgerarr.dataalle

Wenn ncht, dann lege sie händisch ohne Inhalt an und vergib auch 777 als Rechte.

Wenn ich diese Datei anlege sind auf der Oberfläche alle Geräte weg!
 
Auch nach 2 Minuten?
Nachtrag: Natürlich sind alle Geräte weg, weil jetzt die leere Cachedatei gelesen wird. Doch es geht darum, ob sasap jetzt mit einer existierenden Datei diese nun füllt.
 
Zuletzt bearbeitet:
Auch nach 2 Minuten?
Nachtrag: Natürlich sind alle Geräte weg, weil jetzt die leere Cachedatei gelesen wird. Doch es geht darum, ob sasap jetzt mit einer existierenden Datei diese nun füllt.

Ja nach 2 Minuten auch noch weg!
 
Dann kann sasap den Inhalt aus welchen Gründen auch immer nicht schreiben. sas läuft dann in einer Art Notmodus und beschafft sich seine Infos selbst. Die anderen Scripte brauchen den Cache.
Dumm gelaufen, ein funktionierendes sas zu löschen und neu aufzusetzen. Wer weiß, wo welche Rechte in diesem Linux-Rechte- und Benutzerwirrwarr wieder nicht stimmen. *seufz*

Installiere wohl am besten nochmal neu und lösche vorher auch den sas-Ordner, dass auch die Verzeichnisse neu generiert werden.
 
Moins

Und nicht vergessen...
Auch der crond sollte nur einmal laufen, vorher also: killall crond
 
@dtrieb: Hast du nochmal neu aufgesetzt? Läuft es?
 
(Labor-Link entfernt) zum Testen. ;)

Nun Geräte-Cache auf SQLite-Datenbankbasis.
 
Zuletzt bearbeitet:
Hallo,
Einfach drüber bügeln, oder muss noch etwas beachtet werden?
 
Das ist ja das Schöne. Drüberbügeln. SAS merkt, dass der alte Cache keine Datenbank ist und ersetzt die Datei durch eine Datenbank. ;)
 
Moin

Cool man...

Bin grad am Testen.
Hab dafür crontab -e aufgerufen und eine Zeile hinzugefügt...
Code:
* * * * * /var/media/NEW_LINK/cgi-bin/php-cgi -f /var/media/NEW_LINK/sensorandswitch/sasap.php
[COLOR=#ff0000][B]* * * * * /var/media/NEW_LINK/cgi-bin/php-cgi -f /var/media/NEW_LINK/sastest/sasap.php[/B][/COLOR]

Das /sastest/tmp Verzeichnis sieht mit (Pseudos) 1x Info 2x Sensor 1x Schalter so aus...
Code:
total 28
dr----x--t 2 root root 4096 Mar 4 14:17 ./
drwxrwxrwx 8 boxusr11 root 4096 Mar 4 14:12 ../
-rwxrwxrwx 1 root root 7168 Mar 4 14:17 sensorandswitchgerarr.dataalle*
-rwxrwxrwx 1 root root 8392 Mar 4 14:17 sensorandswitchgerarr.dataconf*
-rw-r--r-- 1 root root 0 Mar 4 14:17 sensorandswitchgerarr.datasasap

Kannst du mal bitte erklären wo die Datenbank ist.
Ist das überhaupt richtig so?
Bin ein wenig: :confused:
 
Die Datenbank ist im Verzeichnis /var/media/NEW_LINK/sastest/tmp/sensorandswitchgerarr.dataalle

Kurz zur Erklärung:

.dataalle ist die Datenbank
.dataconf ist die verschlüsselte Konfigurationsdatei als Array (normale Datei)
.datasasap ist eine "Hinweisdatei" an sas, dass sasap auch läuft.
 
Zuletzt bearbeitet:
Danke.
Mal reingucken, momemt...
typenametbl_namerootpagesql
tablecachecache2CREATE TABLE cache (name VARCHAR(99) PRIMARY KEY, ts INTEGER, daten VARCHAR(999999999))
indexsqlite_autoindex_cache_1cache3
 
Zuletzt bearbeitet:
name ist der Gerätename und dient auch als Index
ts ist der Zeitstempel. Alte Eintragungen von Zombies werde nach 70 Sekunden gelöscht.
daten ist das Array des Geräts
 
Erst hab ich ohne crond laufen lassen.
SaS verhält sich trotzdem anscheinend ganz normal und manuelles Schalten ist auch möglich.
Dann erst mit crond, ab dann werden auch die tmp Dateien erstellt.
Das erste SaS (ohne SQLite3 Datenbank) bekommt mit was das Zweite (mit SQLite3 Datenbank) macht.
...und umgekehrt.

Sieht gut aus und fühlt sich solide an. ;)

Hab mal schnell ein Anzeige.php gebastelt...
db.php
PHP:
<?php
date_default_timezone_set('Europe/Berlin');
$strDatenbank = 'sqlite:tmp/sensorandswitchgerarr.dataalle';
$dbh = new PDO($strDatenbank);
?>

cache.php
PHP:
<?php
include("db.php");
try {
$sth = $dbh->prepare('select rowid, * from cache');
$sth->execute();
sleep(0.125);
$dbh = null;
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;">
<tr><th>name</th><th>ts</th><th>daten</th></tr>';
while($Zeile = $sth->fetch(PDO::FETCH_ASSOC)){?>
<tr>
<td><?php echo $Zeile['name']; ?></td>
<td><?php echo $Zeile['ts']; ?></td>
<td><?php echo $Zeile['daten']; ?></td>
</tr>
<?php
}
echo '</table>';
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>

Ausgabe: cache.php sas_cache_daten_table_01.jpg

Hinweis:
Der Timestamp, kann wie du siehst, identisch sein.
Für die Prüfung auf Ungültigkeit ist das unkritisch.
Für eine Eindeutige Identifikation allerdings nicht.
 
Zuletzt bearbeitet:
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.