executor
Einführung
Das executor plugin kann genutzt werden, um eval Ausdrücke und Python Code (z.B. für Logiken) zu testen.
Wichtig
Seien Sie sich bewusst, dass die Aktivierung dieses Plugins ein Sicherheitsrisiko darstellen könnte. Wenn andere Personen Zugriff auf die Web-Schnittstelle erhalten, kann man das ganze SmartHomeNG-Biest kontrollieren. Seien Sie also vorsichtig!!!
Konfiguration
Das Aktivieren des Plugins ist ausreichend.
Beispiele für Eval
12 if 23 % 3 == 5 else None
Würde im Ergebnis None resultieren.
sh..child() + 4
Da sich im Evalausdruck ein relatives Item befindet, ist es notwendig im Feld „Itempfad“ das Item anzugeben, dem das im Code angegebene Unteritem zugewiesen ist.
Beispiel Python Code
Sowohl``logger`` als auch print
funktionieren für die Ausgabe von Ergebnissen. Die Idee ist, dass Logiken mehr oder weniger 1:1 kopiert und getestet werden können.
Loggertest
logger.warning("Eine Warnung")
logger.info("Eine Info")
logger.debug("Eine Debugmeldung")
logger.error("Eine Debugmeldung")
Datenserien für ein Item ausgeben
Abfragen von Daten aus dem database plugin für ein spezifisches Item:
import json
def myconverter(o):
import datetime
if isinstance(o, datetime.datetime):
return o.__str__()
data = sh.<your item here>.series('max','1d','now')
pretty = json.dumps(data, default = myconverter, indent = 2, separators=(',', ': '))
print(pretty)
würde in folgendem Ergebnis münden.
{
"sid": "ArbeitszimmerOG.Raumtemperatur|max|1d|now|100",
"cmd": "series",
"update": "2019-11-09 17:54:22.205668+01:00",
"params": {
"sid": "ArbeitszimmerOG.Raumtemperatur|max|1d|now|100",
"update": true,
"start": 1573317598203,
"end": "now",
"func": "max",
"item": "ArbeitszimmerOG.Raumtemperatur",
"step": 864000
},
"series": [
[
1573231198203,
21.0
],
[
1573232535421,
21.2
]
]
}