Hallo Leute,
seit dem heutigen Update funktioniert mein Aufruf nicht mehr.
Ich habe ein at definiert, welches mir alle 30 Sekunden ein PHP Script per wget aufruft:
define PHP_Script_ausfuehren at +*00:00:30 "sudo wget -q --spider 192.168.178.45/alles.php"
in dem PHP Script wird aus einer Datenbank, der letzte Eintrag geholt und in einen dummy geschrieben:
<?php
//Verbindung zur Datenbank herstellen
mysql_connect("localhost", "root","PASSWORT") or die ("Verbindung nicht möglich");
mysql_select_db("DATENBANKNAME") or die ("Datenbank existiert nicht");
$abfrage10 = "SELECT * FROM `positions` WHERE `id` = (SELECT MAX(`id`) FROM `positions`)";
$ergebnis10 = mysql_query($abfrage10);
while($row10 = mysql_fetch_object($ergebnis10))
header("Location:http://192.168.178.45:8086/fhem?cmd=setreading%20TRACCAR_Status_C220_Alles%20Alles%20ID: $row10->id%20Hoehe: $row10->altitude%20Richtung: $row10->course%20Breite: $row10->latitude%20Laenge: $row10->longitude%20Andere: $row10->other%20ServerDatumZeit: $row10->serverTime%20Geschwindigeit: $row10->speed%20ProtocolDatumZeit: $row10->time%20DeviceID: $row10->device_id");
exit;
?>
Das ganze funktionierte bis zum heutigen Update, jetzt leider nicht mehr.
Wenn ich im at folgendes mache:
define PHP_Script_ausfuehren at +*00:00:30 "sudo wget -q 192.168.178.45/alles.php"
also das --spider weglasse, dann funktioniert es, aber dann lädt er mir die Datei auch ständig runter und müllt mir die Platte voll.
Wenn ich es in der Linux Kommandozeile versuche mit
sudo wget --spider 192.168.178.45/alles.php
kommt folgendes und im dummy passiert nichts:
fhem@NUC:~$ sudo wget --spider 192.168.178.45/alles.php
Spider-Modus eingeschaltet. Prüfe ob die Datei auf dem Server existiert.
--2017-01-20 18:36:34-- http://192.168.178.45/alles.php
Verbindungsaufbau zu 192.168.178.45:80... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 302 Found
Platz: http://192.168.178.45:8086/fhem?cmd=setreading%20TRACCAR_Status_C220_Alles%20Alles%20ID: 6325030%20Hoehe: xxx.7897568949132%20Richtung: xxx.8934783935547%20Breite: xx.21888094072974%20Laenge: x.2972583227687835%20Andere: {"battery":"100.0","ip":"x.xxx.0.72"}%20ServerDatumZeit: 2017-01-20 18:36:29%20Geschwindigeit: 0%20ProtocolDatumZeit: 2017-01-20 18:36:27%20DeviceID: 1 [folge]
Spider-Modus eingeschaltet. Prüfe ob die Datei auf dem Server existiert.
--2017-01-20 18:36:34-- http://192.168.178.45:8086/fhem?cmd=setreading%20TRACCAR_Status_C220_Alles%20Alles%20ID:%206325030%20Hoehe:%20xxx.7897568949132%20Richtung:%20xxx.8934783935547%20Breite:%20xx.21888094072974%20Laenge:%20x.2972583227687835%20Andere:%20%7B%22battery%22:%22100.0%22,%22ip%22:%22x.xxx.0.72%22%7D%20ServerDatumZeit:%202017-01-20%2018:36:29%20Geschwindigeit:%200%20ProtocolDatumZeit:%202017-01-20%2018:36:27%20DeviceID:%201
Verbindungsaufbau zu 192.168.178.45:8086... verbunden.
HTTP-Anforderung gesendet, warte auf Antwort... 405 Method Not Allowed
Die Datei auf dem Server existiert nicht -- Link nicht gültig!
Ich habe es mir jetzt ersteinmal so gebastelt, dass er mit:
sudo wget -q 192.168.178.45/alles.php
die Datei runterlädt und alles korrekt ausführt und dann mit
sudo rm alles.php*
die Datei wieder löscht, aber was ist geändert worden, dass das im Urzustand nicht mehr funktioniert?
Hier noch ein list von dem FHEMWEB und dem allowed an denen nichts verändert wurde:
Internals:
CONNECTS 1654
DEF 8086 global
FD 53
NAME PHPZugang
NR 3881
NTFY_ORDER 50-PHPZugang
PORT 8086
STATE Initialized
TYPE FHEMWEB
Attributes:
closeConn 1
longpoll 1
room 3.01_System
Internals:
NAME allowed_PHPZugang
NR 4045
STATE active
TYPE allowed
validFor PHPZugang
Readings:
2017-01-20 12:20:24 state active
Attributes:
room 3.01_System
validFor PHPZugang
wget --spider wird auf FHEMWEB losgelassen. Mit dieser Option sendet wget ein HTTP HEAD Request. Das hat FHEMWEB noch nie verstanden, und bisher (faelschlicherweise) wie ein GET behandelt. Seit eine Woche wird eine Fehlermeldung (405 Method Not Allowed) ausgegeben, falls nicht GET, POST oder OPTIONS gesendet wird.
P.S.: das Betreff: ist hoechst irrefuehrend.
Nutz doch einfach folgenden Befehl:
define PHP_Script_ausfuehren at +*00:00:30 "sudo wget -O /dev/null -q 192.168.178.45/alles.php"
mit -O wird das Download-File nach /dev/null geschrieben und ist damit weg.
Gruß
Markus
Danke Rudolf für die Erklärung.
Danke Markus, werde ich gleich mal testen.