Zur besten Antwort gewählt
Jan 20, 2018 - 03:31
Die frage ist wie führst du dein php script aus???
Willst du es von dem automation manager aus mit einem task ausführen? Mit einem interval block, z.b. jede 10...oder 60 sekunden??
das wäre der task um dein phpscript (mit dem namen camerascript.php) ausführen
jetzt könnte man das in deinem script einfügen:
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
require('splNetatmoAPI.php');
$Netatmo_user = ‚meine@email.adresse‚;
$Netatmo_pass = ‚1234567890‘;
$Netatmo_app_id = ‚0987654321‘;
$Netatmo_app_secret = ‚asdfghjklöä';
$homeID = ‚09';
$personID = ‚278953478953478934578953; //‚HUGO'
$_splNetatmo = new splNetatmoAPI($Netatmo_user, $Netatmo_pass, $Netatmo_app_id, $Netatmo_app_secret, $homeID);
//get all persons at home:
$atHome = $_splNetatmo->getPersonsAtHome();
$json_String = json_encode($atHome , JSON_PRETTY_PRINT)
$anwesend = $json_String['result']['0']['pseudo'];
if ($anwesend == 'HUGO') {
// hier send get request to automation manager
$url = "http://192.168.1.77:80/tm/http?hugo=ja&at=xxxxxxxxxxxxx";
//xxxxxxxxxx ersetzen mit dein auth aus dem taskmanager
$request = file_get_contents($url);
}
?>
jetzt noch ein task im am:die zeile im script:
$url = "http://192.168.1.77:80/tm/http?hugo=ja&at=xxxxxxxxxxxxx";
mit der aus dem bild in vorschau ersetzen.Dir ist klar das du für Fonzo's zweite option xxxx benötigst ?????
also vergiss es wenn du nicht zusätzlich geld rausschmeissen willst :)
Von
xxxx ist für ipsimcon
Von
(ps. JQUERY & JSON war ein freudscher von mir :)
Fragen:
1) es sind also 2 Tasks im AM, richtig?
2) mit "Script einfügen" meinst DU mein camerascript.php, richtig?
Was mir nicht so richtig gefällt ist diese INTERVALL Auslösung. Belastet das nicht Ressourcen in LAN, Gateway, etc.? Das meinte ich auch mit "anderem Auslöser".
Eine weitere IDEE, wie Du SCRIPT nanntest. Kann man das nicht mit einem Automation Manager internen SCRIPT eleganter lösen und dann die CameraScript.PHP weglassen?
Von
@zdenko Ganz so simpel ist das nicht, er kann nicht per Intervall ständig das PHP Triggern denn dann steigt die Netatmo API aus. Außerdem will er ja sofort reagieren wenn die Person erkannt wurde der Weg muss also andersrum sein, das PHP Skript muss wenn den NEO Automation Manager triggern. Der NEO Automation Manager selber kann nicht als Endpunkt für den Netatmo Webhook dienen da kein POST unterstützt wird also ist so oder so ein PHP Skript notwendig das als Webhook für Netatmo dient.
Er muss also sobald Daten am Webhook über Netatmo reinkommen per GET den NEO Automationmanger aus dem PHP Skript triggern und nicht so wie hier angegeben ständig das PHP Skript anfragen.
Von
@zdenko außerdem Funktioniert das so auch nicht, da er ja das Licht einschalten will, also augenblicklich in dem Moment reagieren in dem über den Webhook neue Daten kommen und die Person erkannt wurde. In dem Beispiel würden die Lampe dann immer erst zeitversetzt abhängig vom gewählten Intervall angehen so lange steht die Person im Dunkeln. Daher muss das PHP Skript den NEO Automation Manger triggern bei Variablenänderung und nicht der NEO Automation Manager zyklisch anfragen.
Von
ok...die frage ganz oben war wie er das php script audführt?
Dazu musste die kamera sobald es bewegung oder eine bestimmte person erkannt wird, eine url aufrufen können....eventuell über iftt? Ich habe ihm den weg gezeigt wie er aus dem php eine url aufruft...ich habe keine netatmo...er hat gefragt wie kann man eine json antwort auswerten und danach einen task auslösen im am.
Also die frage ist wie wird das php script ausgelöst?
Von
@MicSte
Könnte man auch so etwas mit dem internem javascript so eine abfrage machen.....aber die frage ist wieder, wie wirst du es im sobald block triggern????
du musst rausfinden ob die netatmo sobald es eine bewegung gibt, eine url aufrufen kann....evtl über ifttt?
Von
@MicSte
wie hast du dir das mit dem php script vorgestellt?
auswerten ist ja kein problem, wie wird das script aufgerufen????
Von
habe etwas gelesen
es sollte möglich sein einen webhhook selbst einzurichten
https://dev.netatmo.com/resources/technical/reference/cameras/addwebhook
Von
@zdenko Die API sieht vor das bei einem Event der Welcome Kamera ein Webhook getriggert wird. Der Endpunkt für den Webhook ist in dem Fall das PHP Skript oder so was wie IPS. Was dann gemacht werden muss ist das das PHP Skript die Daten die über den Webhook kommen auswertet, es ist also kein Pull vom NEO Automation Manager notwendig sondern die Kamera pusht Daten an das PHP Skript. Bei IPS wird automatisch ein Webhook gesetzt und die Variablen aktualisiert. Ansonsten wenn man das mit einem PHP Skript und eigenem Server selber macht muss eben der PHP Server und der Webhook über eine Domain für Netatmo erreichbar sein. Das GET an den NEO Automation Manager erfolgt dann lokal aus dem PHP Skript sobald Daten über den Webhook von Netatmo kommen. Du bekommst dann also automatisch einen Trigger im NEO Automation Manger wie von Dir oben angegeben per file_get_contents, sobald die Netatmo Daten sendet. Der einzige Unterschied ist das die Kamera selber auslöst und nicht der NEO Automation Manager. Einen separaten Dienst wie IFTTT braucht man dafür nicht, entweder ist der selber aufgesetzte PHP Server der Endpunkt oder IPS.
Zusätzlich besteht natürlich auch jederzeit die Möglichkeit Daten abzufragen dies kannst Du aber nicht als Trigger benutzten da Du da ja die Daten anfragen musst und Du willst ja in dem Moment ein Ereignis im NEO Automation Manager haben sobald eine Person erkannt wurde und dann unmittelbar mit einem Ereignis reagieren wie dem Einschalten einer Lampe.
Von
@MicSite Netatmo ruft einen Webhook auf, dies ist entweder Dein PHP Skript das auf einem PHP Server läuft oder so was wie IPS da wird der Webhook automatisch gesetzt. Die Daten die über den Webhook kommen wertest Du dann aus und sollte die Bedingung die Du prüfen willst erfüllt sein rufst Du wie von zdenko beschrieben den Trigger im Sobald Block des NEO Automation Managers per file_get_contents aus dem Skript auf.
Von
verstehe schon...er hat ja kein ips....da du sowieso viel geschrieben hast....wäre besser du schreibst im ein script das alles löst....
Von
beispiel vom task hat er von mir :)
Von
wie soll er den eine lokale url (automation manager sobald url) von einer domain aufrufen????
Von
Er braucht auch nicht zwingend IPS er braucht nur ein PHP Server der für die Welcome erreichbar ist.
Bei IPS selber braucht er in deinem Beispiel eigentlich nur ein Ereignis das ein Skript auslöst sobald die Variable einen bestimmten ID Wert für einen bestimmten User annimmt bei deinem Beispiel mit dem Inhalt
<?
file_get_contents("http://192.168.1.77:80/tm/http?hugo=ja");
?>
Die Daten des Webhooks werden ausgewertet
https://github.com/CodeKingLabs/de.codeking. xxxx /blob/master/NetatmoCamera/module.php#L239
Wenn er das mit einem eigenen PHP Skript machen will schreibt er die Daten dann nicht in eine Variable sondern setzt direkt ein file_get_contents sobald der Wert mit dem zu erwartenden Wert übereinstimmt.
Von
vorab mal ... Ihr seid ein WAHNSINN, wie toll Ihr versucht mich zu unterstützen .... DAAAANNKE !!! :) :)
also
1) ich habe eine PHP Server (RPI)
2) Ich habe übrigens folgend TRIGGER Idee.
- IF door opens (sensor)
- THAN triggere NETATMO Status (Peson gesehen - via Deinem PHP)
- DANN Aktion
Ich muss mal all Eure Kommentare auf mich wirken lassen.
Habe heute versucht Deine Implementierung @zdenko33 des PHP´s zu testen. Bekomme es mit Deinem PHP nicht hin! Denkst DU dass da ein Fehler drin sein könnte?
Von
http://bit.ly/2BhfLco
Hier werden die Daten vom Webhook ausgewertet, das muss dann in ein eigenes PHP Skript überführt werden wenn man das mit einer eigenen PHP Seite und eigenem PHP Server lösen will.
Von
@MicSte_Mediola
Das mit dem zusätzlichen Sensor ist eine gute Möglichkeit, dann könntest Du theoretisch Dir auch den Webhook ja sogar den ganzen PHP Ansatz sparen. Insofern der Sensor im Sobald Block des NEO Automation Manager genutzt werden kann kannst Du dann ein Javascript des NEO Automation Managers starten und rufst dann aus dem Javaskript die Daten von der Welcome ab, wenn der Wert dann Hugo entspricht kannst Du entweder direkt aus dem Skript etwas anstoßen oder einen weiteren Task auslösen, der dann die eigentliche Lampe schaltet. In dem Fall ist dann also nicht die Welcome der Auslöser sondern Dein zusätzlicher Sensor.
Von
was ich nicht verstehe @fonzo
diese webhook url sollte für die netatmo erreichbar sein, wie ist sie erreichbar wenn der server lokal läuft
GET /api/addwebhook?access_token=[YOUR_TOKEN]&url=[YOUR_WEBHOOK_URL]&app_type=[APP_TYPE] HTTP/1.1
yourwebhookurl kann das php script lokal sein????
Von
@micSte ja das script könnte fehlerhaft sein, aber nur die auswertung des json
du kannst testweise diese zeile entfernen
$json_String = json_encode($atHome , JSON_PRETTY_PRINT)
und diese
$anwesend = $json_String['result']['0']['pseudo'];
so probieren
die if abfrage kannst du auch testweise wegnehmen und einfach die am url so aufrufen:
$url = "http://192.168.1.77:80/tm/http?hugo=ja&at=xxxxxxxxxxxxx";
//xxxxxxxxxx ersetzen mit dein auth aus dem taskmanager
$request = file_get_contents($url);
ob das script den sobald block auslöst
$anwesend = $atHome['result']['0']['pseudo'];
Von
ob yourwebhookurl auch lokal sein kann weis ich nicht das müsste man ausprobieren wäre aber eine Möglichkeit wenn die Welcome und der Webhook beide lokal im gleichen Netz liegen.
Neuen Kommentar hinzufügen