Plugin zum Ausführen von Skripten (Shell, PHP, Ruby…) und http-Anforderungen zum Abrufen von Informationen in XML oder JSON.
Die Konfiguration ist sehr einfach. Nach dem Herunterladen des Plugins müssen Sie es nur noch aktivieren und fertig.
Die einzige Möglichkeit besteht darin, dass jeedom die Skripte standardmäßig ablegt. Es wird empfohlen, sie nicht zu berühren.
Auf die Konfiguration der Skriptausrüstung kann über das Plugin / Programmiermenü zugegriffen werden
So sieht die Script-Plugin-Seite aus (hier bereits mit Ausrüstung) :
Hier ist die Liste Ihrer Skripte. Sobald Sie auf ein Gerät klicken, erhalten Sie :
Hier finden Sie die gesamte Konfiguration Ihrer Geräte :
Hier finden Sie die Liste der Bestellungen :
Dieses Feld muss die Abfrage selbst oder den Skriptpfad enthalten, wenn das Feld “Skripttyp” Skript ist. Die Schaltfläche “Durchsuchen”” : Mit dieser Option können Sie die Datei auswählen, die im internen Ordner Jeedom enthalten ist.
> Auf diese Datei kann in SSH in zugegriffen werden ``/var/www/html/plugins/script/data/``. Zu Ihrer Information, der SSH-Befehl zum Zuweisen von Rechten ``www-data`` zu einer Datei ist : ``sudo chown www-data:www-Daten NOMDUSCRIPT.EXTENSION``. Beachten Sie, dass ein Skript zum Ausführen von Rechten über WWW-Daten verfügen muss.
Die Schaltfläche Neu : ermöglicht das Erstellen einer Befehlsdatei.
> Vergessen Sie nicht, den Namen der Datei und ihre vollständige Erweiterung einzugeben, da sonst Ihr hervorragendes Skript nicht funktioniert. Ohne Erweiterung kann Jeedom die mit Ihrer Datei verknüpfte Sprache nicht erkennen. CF. : Allgemeinheit
Wichtig
Sonderzeichen sollten im Skriptpfad oder in seinen Parametern so weit wie möglich vermieden werden. Die erlaubten Zeichen sind : Zahlen, Buchstaben (Groß- oder Kleinschreibung)
Wichtig
Sie können im Anfragefeld (für http, json, xml) json eingeben, Sie müssen ihm nur
json voranstellen::
, Beispieljson::{"clef":"valeur"}
Wird verwendet, um eine URL aufzurufen oder die Rückgabe einer URL abzurufen.
Ermöglicht das Übergeben einer Webseite (HTML-Datei), um einen obigen Wert abzurufen. Die Syntax ist dieselbe wie für jquery.
Das Optionsfeld enthält ein Feld “HTML-Datei-URL”” : Dieses Feld enthält daher den Link zu dem Computer, auf dem sich die betreffende HTML-Datei befindet.
Ermöglicht es Ihnen, XML wiederherzustellen und gezielt nach einem Wert darin zu suchen.
Das Optionsfeld enthält das Feld “URL der XML-Datei”” : Dieses Feld enthält daher den Link zu dem Computer, auf dem sich die betreffende XML-Datei befindet.
Wichtig
Es können nur Werte abgerufen werden, Attribute können nicht abgerufen werden.
Ermöglicht die Wiederherstellung von json und die gezielte Suche nach einem Wert darin.
Das Optionsfeld enthält ein Feld “JSON-Datei-URL”” : Dieses Feld enthält daher den Link zu dem Computer, auf dem sich die betreffende JSON-Datei befindet.
Das Beispiel basiert auf einer Vera und besteht aus dem Antreiben einer dimmbaren Glühbirne. Ich werde nicht näher darauf eingehen, wie eine Vera per http-Anfrage gesteuert werden kann. Das TLD-Forum ist voller Antworten. Außerdem entspricht das Beispiel meiner Materialart und muss an Ihre angepasst werden.
Spitze
Eine Methode für diejenigen, die nach dem Schreiben von http-Anfragen suchen. Überprüfen Sie zuerst die Syntax in Ihrem Browser und wechseln Sie dann zur Konfiguration unter Jeedom. Wenn ein Aktionsskript nicht funktioniert, können Sie durch Umschalten auf das Skript “Info / Andere” den zurückgegebenen Fehler sehen.
Lassen Sie uns gehen :
Erklärungen :
''url
http://<IP_VERA>:3480/data_request?id=lu_action&output_format=json&DeviceNum=12&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=100
‘’
Spitze
Die “100” am Ende der Anforderung entspricht dem Prozentsatz der zuzuweisenden Leistung. Wenn Sie also “0” am Ende der Anforderung setzen, entspricht dies dem Ausschalten der Glühlampe.
Mit der Schaltfläche “Test” können Sie Ihre Bestellung testen !
Sie können daher Bestellungen in derselben Ausrüstung multiplizieren, indem Sie beispielsweise eine Bestellung mit 60% für schwaches Licht aufgeben und eine dritte Bestellung mit 30% für Nachtfahrten erstellen, die in einem Szenario kombiniert werden sollen usw
Es ist auch möglich, einen Schieberegler-Befehl zu erstellen, indem Sie das Tag #slider#
in der Abfrage :
''url
http://<IP_VERA>:3480/data_request?id=lu_action&output_format=json&DeviceNum=12&serviceId=urn:upnp-org:serviceId:Dimming1&action=SetLoadLevelTarget&newLoadlevelTarget=#slider#
‘’
Spitze
Wenn Ihr Befehl vom Typ Nachricht ist, können Sie die Tags ` verwenden#message#
und
#title#, dasselbe für einen Farbtypbefehl mit dem Tag
#color#, oder Slider-Typ mit
#slider#oder Liste mit
#select#`
Ziel : Senden Sie eine Benachrichtigung an XBMC, wenn Sie eine Vordertür öffnen.
''url
http://IP_DE_XBMC:8080/jsonrpc?request={ %22jsonrpc%22:%222.0%22,%22method%22:%22GUI.ShowNotification%22,%22params%22:{ %22title%22:%22Mouvement% 20Détecté%22,%22message%22:%22Porte% 20Entrée%22},%22id%22:1}
‘’
Es liegt an Ihnen, dies beispielsweise in einem Szenario zu testen !
XBMC-API hier (Nur die mit “erforderlich” gekennzeichneten Felder sind obligatorisch)
Ziel : Senden Sie eine Benachrichtigung an XBMC, wenn die Temperatur einen bestimmten Schwellenwert unterschreitet
Nehmen Sie das obige Beispiel :
Door%20Entry
durch Temperature%20exterior%20:% 20#[EXTERIEUR][EXTERIEUR][TEMPERATURE]#
Testen Sie ein Szenario #[EXTERIEUR][EXTERIEUR][TEMPERATURE]# < 5
par exemple
Aktion : Starten Sie das Skript über eine virtuelle Ausrüstung, die mit Ihrem Skript verknüpft ist !
Das Schönste, aber nicht das Einfachste zu erklären.
Voraussetzungen : wissen, wie man ein Skript in PHP, Python, Perl oder Ruby entwickelt.
Wichtig
Die Erweiterung Ihres Skripts muss unbedingt dem Typ entsprechen. In der Tat basiert Jeedom auf der Erweiterung des Skripts für den Start der ausführbaren Datei
Wenn Ihr Dateiname nicht enthält :
- .php .py .pl .rb
Das Skript-Plugin startet eine Shell, die es basierend auf der Direktive der 1. Zeile (shebang) ausführt ). Beispiel :
''bash
#!/ bin / csh -f
#!/ bin / ksh
#!/ usr / bin / env python3
#!/ usr / bin / env php
#!/ usr / bin / env Knoten
Usw. ...
‘’
Das Skript zur Überwachung der Himbeertemperatur dient als Beispiel für die Verwendung des Skripttyps : Script
Nach dem Herunterladen des Skripts können Sie über die Schaltfläche “Durchsuchen” die Datei temp_rasp.php auswählen.
Aus Neugier können Sie den Inhalt der Datei anzeigen, indem Sie auf die Schaltfläche “Bearbeiten” klicken. Sie sollten den folgenden Code erhalten :
Dies ist ein PHP-Skript, das außerhalb von Jeedom wiederverwendet werden kann !
''php
<?php
$temp = shell_exec("cat /sys/class/thermal/thermal_zone0/temp");
$temp = $temp / 1000;
$temp = round($temp,1);
echo $temp;
?>
‘’
Notiz : konkret ist es die PHP “Echo” -Funktion, die Jeedom den Wert gibt
Holen Sie sich Jeedom’s Informationen, um sie in einem Skript zu verwenden. Die Wiederherstellung hängt von der Art des verwendeten Skripts ab :
/var/www/html/plugins/script/data/my_script.php my_value
, das Argument my_value
est une chaîne de caractères (fixe) récupérée dans le Skript php dans le tableau d’arguments $argv
voir https://www.php.net/manual/fr/reserved.variables.argv.php für weitere Details.In der Leitung : /var/www/html/plugins/script/data/radio.py VOL #slider#
, das Argument #slider#
wird auf diese Weise $argv[2]
abgerufen. Wenn das Skript von Jeedom ausgeführt wird, ersetzt es automatisch #slider#
durch den (numerischen) Wert des Schiebereglers. siehe Google für Details zum Abrufen von Parametern in Python.
#[MAISON][CUISINE][Température]#
als Parameter an das Skript und Jeedom ersetzt es durch den beim Senden gelesenen Wert.Empfehlung zum Testen der Parameter im PHP-Skript :
''php
if (isset($argv)) {
foreach ($argv als $arg) {
$argList = explode('=', $arg);
if (isset($argList[0]) && isset($argList[1])) {
$_GET[$argList[0]] = $argList[1];
}
}
}
‘’
Hier ist das Format des Standard-XML :
`` ‘‘xml
`` ‘’
Wenn Sie den Wert von led0 in der Abfrage haben möchten, geben Sie led0 ein. Si vous voulez la valeur de la led1 qui est le fils de leds vous mettez leds > led1.
Notez que l’élément racine <root> n’est pas à préciser dans le champ Petition.
`` ‘‘xml
`` ‘’
Die Syntax lautet :
leds > 1 > led1
, was Tata als Antwort gibt, wobei 1 die Zeilennummer des Arrays ist !
`` ‘‘xml
`` ‘’
Informationen aus dem Feld Wert des 1. Blocks abrufen:
MesPar>0>Wert>0
was also “268.56 “
Um das nächste Element in der Wert “Struktur” zurückzugeben, müssen Sie nur die Bestellnummer in der Struktur angeben. Was für das Element <Wert Typ="delta24"> 0.051</Wert>
den folgenden Code :
MesPar>1>Wert>2
Um zum nächsten “MyPar” -Block zu gelangen, müssen Sie daher den Index entsprechend ändern : die 1 mal 2 zum Beispiel.
Achtung : Wenn sich die Reihenfolge in der XML-Datei ändert, funktioniert die Anforderung nicht mehr. Die Anforderung muss entsprechend der zurückgegebenen Bestellung angepasst werden.
Wie beim XML-Typ ist es möglich, Informationen aus einer JSON-Rückgabe zu lesen.
Zur Erklärung werde ich mich auf JSON-Informationen mit der Sickbeard-Anwendung (boo… cpasbien) stützen, aber hier nur auf die Haupttechnik, nicht auf das Tool!
Der Zugriff auf diese Datei ist über die folgende URL möglich :
http://<IP_DELAMACHINEQUIEBERGESICKBEARD>:8083/api/XXXX/?cmd=history&limit=3
Notiz : XXXX ist die für jeden SICKBEARD spezifische API-Schlüsselnummer.
Bevor Sie mit der Konfiguration des JSON-Skript-Plugins beginnen, müssen Sie zunächst die wiederherzustellenden Informationen korrekt identifizieren., denn hier werden wir einen Begriff des Arrays in die Rückgaben integrieren.
Überprüfen Sie die Anzeige von Informationen in Ihrem Browser (Test in Chrome).
Beispiel für die Rückgabe :
''json
{
"data": [
{
"date": "10.09.2014 01:37",
"episode": 4,
"provider": "RNT",
"quality": "SD-TV",
"resource": "XXX",
"Ressourcenpfad": "XXXX",
"season": 2,
"Name anzeigen": "Totovaalaplage S2E4",
"status": "Downloaded",
"tvdbid": XXXXX
},
{
"date": "10.09.2014 01:36",
"episode": 3,
"provider": "RNT",
"quality": "SD-TV",
"resource": "XXXX",
"Ressourcenpfad": "XXX",
"season": 2,
"Name anzeigen": "Totovaalaplage S2E3",
"status": "Downloaded",
"tvdbid": XXXXX
},
{
"date": "10.09.2014 01:21",
"episode": 1,
"provider": "Cpasbien",
"quality": "SD-TV",
"resource": "XXXX",
"Ressourcenpfad": "XXXX",
"season": 1,
HIER --> "show_name": "Totovaplusauski aber Totovaalaplage S1E1",
"status": "Snatched",
"tvdbid": XXXX
}
],
"message": "",
"result": "success"
}
‘’
In der Hypothese, in der wir den show_name des 3. Elements in php (HIER markiert) zurückgeben möchten, müssten wir dies tun : data> 2> show_name, der Rückgabearray-Index, der bei Null beginnt.
In diesem Beispiel gibt die Schaltfläche “Test” “Totovaplusauski aber Totovaalaplage S1E1” zurück”.
Präzisierungen :
Beachten Sie die Syntax des Abfragebefehls vom Typ element0> Array-Index> element1
Nachteile :
Hier werden wir versuchen, die letzte FML abzurufen.
Zuerst müssen Sie die URL konfigurieren :
http://www.viedemerde.fr
Dann müssen Sie den “Pfad” der letzten FML finden. Gehen Sie dazu zur Website, klicken Sie mit der rechten Maustaste auf den gewünschten Artikel und überprüfen Sie den Artikel, den Sie erhalten :
Dies ist der komplexeste Teil und erfordert eine kleine Analyse. Hier befindet sich mein Text in einem “a” -Tag, das sich in einem Element vom Typ p befindet, das ein Post-Artikel der Klasse div ist”. Also muss ich das erste div-Element der Klasse “post” und “article” auswählen, dann das erste Element p und ich bekomme alles in den darin enthaltenen “a” -Tags. Also habe ich : “div.post.article:erste p:zuerst a”.
Also bekommen wir :
Für ein Update in Echtzeit ist es möglich, ein Update zu erstellen.
Spitze
Bei der Installation eines Update-Cron aktiviert Jeedom automatisch das Kontrollkästchen Ereignis. Dies ist völlig normal.
Hier können Sie sich dann ein Szenario vorstellen, das Ihnen per SMS die letzte FML sendet.