Hallo,
evtl kann mir hier Jemand weiterhelfen, wie die Plugingeschichte genau funktioniert.
Ich habe ein Plugin geschrieben, welches die Daten vom Tado Heizungssteuerungssystem ausliest. Mir ist aber total unverständlich wie ich jetzt zb. den Temperaturwert an das Item bringe. Ich schlage mich jetzt seit 2 Wochen damit rum und bekomme immer wieder andere Fehlermeldungen.
Unten stehendes ist jetzt sicherlich nicht schön ( bin halt kein Programmierer) aber wenn ich den Code so ausführe, bekomme ich einen Jsonstring zurueck und mit:
tt = jsonData['insideTemp'] steht auch der Temperaturwert in tt
Beim Start von smarthome.py -d gibt es beim einlesen des Plugins keinerlei Fehlermeldungen. Es wird auch alle 30 Sekunden ausgeführt.
Nun zu meiner Verständnisfrage:
Wie komme ich an den Wert oder anders , wie kommt das Item an den Wert? Ich hab das auch schon ueber eine logik probiert aber dort kommen dann untenstehende Fehlermeldungen. Die Fehlermeldung ist nur ein Beispiel. Ändere ich etwas kommte wieder eine andere Fehlermeldung.
Es wäre gut wenn ich verstehen könnte wie die Kommunikation dort abläuft
Ich sage schonmal viele herzlichen dank und evtl kann mir Jemand den fehlenden Schubser geben. Und ja , da stehen an manchen Stellen bestimmt noch Einträge, die letztendlich nicht gebraucht werden
Plugincode:
Plugin.conf:
Item.conf
evtl kann mir hier Jemand weiterhelfen, wie die Plugingeschichte genau funktioniert.
Ich habe ein Plugin geschrieben, welches die Daten vom Tado Heizungssteuerungssystem ausliest. Mir ist aber total unverständlich wie ich jetzt zb. den Temperaturwert an das Item bringe. Ich schlage mich jetzt seit 2 Wochen damit rum und bekomme immer wieder andere Fehlermeldungen.
Unten stehendes ist jetzt sicherlich nicht schön ( bin halt kein Programmierer) aber wenn ich den Code so ausführe, bekomme ich einen Jsonstring zurueck und mit:
tt = jsonData['insideTemp'] steht auch der Temperaturwert in tt
Beim Start von smarthome.py -d gibt es beim einlesen des Plugins keinerlei Fehlermeldungen. Es wird auch alle 30 Sekunden ausgeführt.
Nun zu meiner Verständnisfrage:
Wie komme ich an den Wert oder anders , wie kommt das Item an den Wert? Ich hab das auch schon ueber eine logik probiert aber dort kommen dann untenstehende Fehlermeldungen. Die Fehlermeldung ist nur ein Beispiel. Ändere ich etwas kommte wieder eine andere Fehlermeldung.
Es wäre gut wenn ich verstehen könnte wie die Kommunikation dort abläuft
Ich sage schonmal viele herzlichen dank und evtl kann mir Jemand den fehlenden Schubser geben. Und ja , da stehen an manchen Stellen bestimmt noch Einträge, die letztendlich nicht gebraucht werden
Plugincode:
Code:
#!/usr/bin/env python3 import logging import time import urllib.request import urllib.parse import json logger = logging.getLogger('tado') class tado(): def __init__(self, smarthome): self._sh = smarthome def parse_item(self, item): return None def parse_logic(self, logic): return None def read_data(self): params = urllib.parse.urlencode({'username': 'user', 'password': 'passwort'}) f = urllib.request.urlopen("https://my.tado.com/mobile/1.5/getCurrentState?%s" % params) data = (f.read().decode('utf-8')) jsonData = json.loads(data) tt = jsonData['insideTemp'] def temperatur(self, temperatur): temperatur = self.tt return () def parse_logic(self, logic): pass def run(self): self.alive = True def stop(self): self.alive = False
Code:
[tado] class_name = tado class_path = plugins.tado
Code:
[Tado] name = Tado [[Temperatur]] name = Temperatur type = num visu_acl = r sqlite = yes enforce_updates = true eval = sh.Tado.Temperatur() cycle = 30
Code:
#!/usr/bin/env python # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab ######################################################################### # # logics/tado.py # temperatur = sh.tado.temperatur('tt') #if "insideTemp" in temperatur: sh.tado.temperatur('tt')
Code:
2015-01-05 14:16:00,079 ERROR Tado Logic: Tado, File: /usr/smarthome/plugins/tado/__init__.py, Line: 53, Method: temperatur, Exception: 'tado' object has no attribute 'tt' -- scheduler.py:_task:334 Traceback (most recent call last): File "/usr/smarthome/lib/scheduler.py", line 327, in _task exec(obj.bytecode) File "/usr/smarthome/logics/tado.py", line 7, in <module> temperatur = sh.tado.temperatur('tt') File "/usr/smarthome/plugins/tado/__init__.py", line 53, in temperatur temperatur = self.tt AttributeError: 'tado' object has no attribute 'tt'
Kommentar