UserPushAtHome

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Habe das mal aus der Konsole getestet. Einer von euch hat einen Schreibfehler in dem Befehl. Habe beide Varianten getestet und Denke das das falsch ist.

      DieterWo wrote:

      ip-adresse/shc/install.php?app…=pushuserathome&auh=0&ip=<ip des Users>&user=<user>&password=<password>
      Bei dieser, bekomme ich folgende Meldung. Der User bleibt "offline"

      Microgamer wrote:

      adresse-vom-master/shc/?app=shc&a&ajax=pushuserathome&user=<user>&password=<Passwort>&ip=<IP des Benutzer zu Hause>&uah=<Befehl>
      Ronalds-iMac:~ ronaldspahn$ 192.168.200.115/shc/?app=shc&a…Sabine&password=xxxxyyyxx
      [25] 42486
      -bash: 192.168.200.115/shc/?app=shc: No such file or directory
      [26] 42487
      -bash: a: command not found
      [27] 42488
      [28] 42489
      [29] 42490
      [30] 42491
      [24] Done user=Sabine
      [25] Exit 127 192.168.200.115/shc/?app=shc
      [26] Exit 127 a
      [27] Done ajax=pushuserathome
      [28] Done auh=1
      [29] Done ip=192.168.200.13
      Ronalds-iMac:~ ronaldspahn$
      SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
    • Ok.
      Ausgabe Web- Page:
      {"success":true,"message":"flag is set"}

      User bleibt "not at home"Datei ist aber da.

      pi@SHCMasterFlur:/var/www/shc/rwf/data/cache $ ls -la
      insgesamt 16
      drwxrwxrwx 3 root root 120 Mär 12 21:58 .
      drwxrwxrwx 6 root root 4096 Jan 16 06:36 ..
      -rw-r--r-- 1 www-data www-data 1 Mär 12 21:58 192.168.200.13.tmp
      -rwxrwxrwx 1 root root 19 Mär 12 22:02 shedulerRun.flag
      -rwxrwxrwx 1 root root 19 Mär 9 15:03 switchServer.flag
      drwxrwxrwx 2 www-data www-data 620 Mär 12 20:38 templates
      pi@SHCMasterFlur:/var/www/shc/rwf/data/cache $

      Nachtrag: mit uah=0 wird die Datei auch wieder gelöscht. Das funktioniert soweit. Nur der Status im SHC ändert sich nicht.
      SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
    • Sheduler läuft. Was ist aufgerauscht?

      File lässt sich so erstellen, löschen und abfragen, ob vorhanden. Nur die Übergabe an den SHC geht nicht.


      Nachtrag: Wenn ich mein Phone in den Flugmodus setze bzw. wieder anschalte geht das im SHC. Da sollte also alles funktionieren.
      SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
    • ok, gute Nacht.

      Habe beide Dateien verglichen. userathomeupdatetask.class.php installierte und die aus dem ZIP Verzeichnis sind gleich.

      Die Datei wurde also auch die Installation ersetzt.
      SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.

      The post was edited 1 time, last by rmjspa ().

    • Also,

      das ganze Ergänzung besteht im Grund aus einer neuen Datei und einer Änderung einer bestehenden.

      (in diesem Beispiel wird von folgendem Szenario ausgegangen:
      SHC-Master-IP: 192.168.1.100
      Username: admin
      Passwort: admin
      Angelegte User-At-Home-IP: 192.168.1.200
      )

      Die neue Datei liegt unter "/var/www/shc/shc/data/commands/all" und heißt "pushuserathomeajax.class.php".
      Diese Datei macht nichts anderes als das Auswerten des http-Requests (mit überprüfen auf gültige Anmeldung) und ggf. erzeugen oder löschen einer Datei unter "/var/www/shc/rwf/data/cache". Die Datei, die angelegt wird bekommt als Dateinamen die IP, die in dem Http-Request angegeben wird, plus der Endung ".tmp"

      So führt der Aufruf

      Source Code

      1. http://192.168.1.100/shc/index.php?app=shc&a&ajax=pushuserathome&user=admin&password=admin&uah=1&ip=192.168.1.200
      dazu, dass die Datei "/var/www/shc/rwf/data/cache/192.168.1.200.tmp" angelegt wird, sofern sie noch nicht vorhanden ist.

      Und der Aufruf

      Source Code

      1. http://192.168.1.100/shc/index.php?app=shc&a&ajax=pushuserathome&user=admin&password=admin&uah=0&ip=192.168.1.200
      führt dazu, dass die Datei "/var/www/shc/rwf/data/cache/192.168.1.200.tmp", wenn sie denn vorhanden ist, wieder gelöscht wird.

      Das ganze funktioniert völlig unabhängig vom Sheduler.

      Als Ergebnis kommt immer ein JSON-String zurück, der z.B. so aussieht:

      Source Code

      1. {"success":true,"message":"flag is already unset"}
      Das Ergebnis des Request ist true, also erfolgreich. Als Message dann noch die zusätzliche Information, dass der Zustand bereits vorhanden war.
      Diese Rückmeldung soll für App's die Möglichkeit bieten, auszuwerten ob der Befehl erfolgreich abgesetzt werden konnte.


      Als 2. Teil muss jetzt die Tatsache, ob die Datei "/var/www/shc/rwf/data/cache/192.168.1.200.tmp" vorhanden ist, vom SHC ja irgendwie ausgewertet werden.
      Das übernimmt netterweise der Sheduler, der ja sowieso regelmäßig versucht das Gerät mit der IP 192.168.1.200 anzupingen.
      Um nun aber diese Ping-Auswertung um die Existenz der Datei zu ergänzen haben wir die Datei "userathomeupdatetask.class.php" aus dem Verzeichnis "var/www/shc/shc/lib/sheduler/tasks/" modifiziert.
      Das heißt, dass diese Datei auch schon vorher Bestandteil vom SHC waren. Somit ist dessen Existenz kein Beweis, dass die Änderung auch darin enthalten ist.
      Um das festzustellen müssen wir uns die Datei mit nano anschauen:

      Source Code

      1. sudo nano /var/www/shc/shc/lib/sheduler/tasts/userathomeupdatetask.class.php
      in diese Datei suchen wir nach einer stelle wo der Kommentar "Auswerten" steht


      Source Code

      1. //Auswerten
      2. if ((strlen($state) > 0) or (file_exists("/var/www/shc/rwf/data/cache/".$userAtHome->getIpAddress().".tmp"))) {
      Ursprünglich steht hier nur (strlen($state) > 0), also das Auswerten des Ping-Ergebnisses.

      Diese Zeile wurde von uns um den Teil "or (file_exists("/var/www/shc/rwf/data/cache/".$userAtHome->getIpAddress().".tmp"))", der eben noch die Existenz der Datei "/var/www/shc/rwf/data/cache/192.168.1.200.tmp" abfragt. (Ist diese Ergänzung nicht vorhanden, so wurde die Datei auch noch nicht ersetzt, und das pushuserathome kann noch nicht funktionieren).

      Wenn eine von beiden Bedingungen erfüllt ist, also entweder das Ping erfolgreich ist oder die Datei existiert, dann wird der User mit den entsprechenden IP auf "Zu Hause" gesetzt. Das erklärt auch, warum das Ping keine Rolle mehr spielt, wenn die Datei existiert.

      Um ein unabhängiges Schalten über Ping und Push zu ermöglichen, müssen also zwei User-At-Home-IP's im SHC angelegt werden. Eine mit der tatsächlichen IP des Gerätes für das Ping, und einen virtuelle IP, die es tatsächlich nicht gibt (diese muss auch nicht im lokalen IP-Bereich liegen), für die Push Funktion.
      Gruß Dieter
      --------------
      Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
    • Danke Dieter für die ausführliche Erklärung.

      Die Datei ist, wie zu sehen ist da, und modifiziert.


      sudo nano /var/www/shc/shc/lib/sheduler/tasks/userathomeupdatetask.class.php

      //Ping senden
      $state = exec(sprintf('ping -c 1 -W 1 %s', escapeshellarg($userAtHome->getIpAddress())), $res, $rval);

      //Auswerten
      if (strlen($state) > 0 or file_exists("/var/www/shc/rwf/data/cache/".$userAtHome->getIpAddress().".tmp"))
      //online
      $userAtHome->setState(Element::STATE_ON);



      DieterWo wrote:

      müssen also zwei User-At-Home-IP's im SHC angelegt werden.
      Den Teil verstehe ich nicht. Warum zwei?

      Übrigens: Aus der Konsole mit wget hat gar nicht funktioniert. Aber, dass liegt vielleicht auch an mir. Habe das http://.... wie im Browser nur mit wget am Anfang in der Konsole eingegeben. Unter anderem 404 error. Findet die Seite nicht. Den genauen Fehler kann ich noch posten.
      SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
    • Habe einen Neustart gemacht. Jetzt startet der Sheduler nicht mehr. Weder durch reboot noch händisch.

      Fehlermeldung nach php index.php app=shc -sh

      PHP Parse error: syntax error, unexpected 'UserAtHomeEditor' (T_STRING), expecting function (T_FUNCTION) in /var/www/shc/shc/lib/sheduler/tasks/userathomeupdatetask.class.php on line 89

      Das ist jetzt nicht so gut, da es mein laufendes System ist.
      SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
    • Editier mal mit nano die oben genannte Datei.

      An der Stelle:

      Source Code

      1. //Auswerten
      2. if (strlen($state) > 0 or file_exists("/var/www/shc/rwf/data/cache/".$userAtHome->getIpAddress().".tmp"))
      3. //online
      4. $userAtHome->setState(Element::STATE_ON);
      5. } else {


      fehlt die öffnende geschweifte klammer hinter ".tmp"))
      Es muss also so aussehen:


      Source Code

      1. //Auswerten
      2. if (strlen($state) > 0 or file_exists("/var/www/shc/rwf/data/cache/".$userAtHome->getIpAddress().".tmp")) {
      3. //online
      4. $userAtHome->setState(Element::STATE_ON);
      5. } else {
      Dann speichern, mal kurz mit ls -l dir rechte prüfen und sheduler neu starten, dann sollte es gehen.

      @Microgamer: Bitte die Zip-Datei mit der Änderung noch mal neu hochladen.
      Gruß Dieter
      --------------
      Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.