Ankündigung
Einklappen
Keine Ankündigung bisher.
Plugin Pelletkessel
Einklappen
X
-
Join smartVISU on facebook. Web: smartvisu.de.
Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.
-
So geht soweit. Prima.
Ich kann jetzt Items anlegen ala:
Code:[etatest] [[testuri1]] eta_pu_uri = 112/10021/0/0/12000 type = str [[[strValue]]] eta_pu_type = strValue type = str [[[unit]]] eta_pu_type = unit type = str [[testuri2]] eta_pu_uri = 112/10021/0/0/12162 type = str [[[strValue]]] eta_pu_type = strValue type = str [[[unit]]] eta_pu_type = unit type = str
Das muss ich jetzt noch ein wenig aufhübschen, Kommentare in den Code, kurze Doku, dann wirds ins git geschoben.
Anschliessend fehlt dann noch Error handling der Heizung, sowie schreiben von Parametern.Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Kommentar
-
Hallo,
Zitat von greentux Beitrag anzeigenSo geht soweit. Prima.
Bis bald
Marcus
Kommentar
-
Ja, dringend! Allerdings bestand das Wochenende aus 14 Kubik Muttererde verteilen (immerhin mit Radlader), verfestigen und glatt bekommen und zum Ausgleich Weinfest.
Aber ja, steht gaaanz oben
GrußDerzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Kommentar
-
So, ich habe noch ein Problem.
Während plugin init würde ich gern das Variablen Set auf die ETA schieben.
Dazu müsste ich die Items alle durchgehen und alle CAN Uri einsammeln. Hat man bei __init irgendwie Zugriff auf die Items?
Sonst kann ich es auch in parse_item machen, was dann ja aber regelmaessig passieren würde. Klar kann man sich das da dann "merken", schöner wärs in init.
Danke und GrußDerzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Kommentar
-
Ja eben, immer für ein Icon...
Also merk ich mir die Liste so lange bis sie vollständig ist? Merkt man das, wann alle Items durch sind?
Ich muss dem Kessel einmal alle UIDs geben, die in der item.conf stehen.
Das verwaltet der intern als ein URI-Set, welches ich anshcliessend mit einem Rutsch lesen kann.
Klar kann ich auch einen externen Helper schreiben. Ich finde nur den Ort beim Plugin Init ganz geeignet, das zu tun.Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Kommentar
-
Also nochmal.
Man kann bei der Heizung alle Werte mit einem Mal abfragen. Muss man sogar, da die sonst zu langsam ist.
Also muss ich einmal alle Items (siehe oben, da stehen ja die URI drin) an die Heizung geben und ihr sagen, das das Set "smarthome" aus den ganzen URI besteht. Das speichert sie und fertig.
Das kann ich nun auf der Kommandozeile machen mit einem python Programm, was mit sh.py nix zu tun hat. Das wäre ein Helper. Find ich aber doo, da ich da immer dran denken müsste, wenn ich in der items.conf was ändere.
Also dachte ich mir, das ich das doch in __init machen könnte. Klang jedenfalls danachAber ok, da sind die items noch nicht da.
Also muss ich es in parse_item irgendwie reinbauen. Mal sehen.Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Kommentar
-
ungefähr so:
Code:def __init__(self) uris = {} def parse_item(self, item): if 'eta_pu_uri' in item.conf: self.uris[item.conf['eta_pu_uri']] = item def run(self): # oder besser in eine Methode die zyklisch aufgerufen wird values = self.fetch_values() for uri in self.uris: if uri in values: value = values[uri] self.uris[uri](value, 'eta') # hier wird das Item aktualisiert
Marcus
Kommentar
-
ja das ist der Teil den ich schon habe.
Code:self._sh.scheduler.add( 'ETA_PU', self.update_status, cycle=self._cycle) self.alive = True def stop(self): self.alive = False def parse_item(self, item): if 'eta_pu_type' in item.conf: uri = None parent_item = item.return_parent() if (parent_item != None) and parent_item.conf.has_key('eta_pu_uri'): uri = parent_item.conf['eta_pu_uri'] if uri: if uri not in self._uri: self._uri[uri] = [] self._uri[uri].append(item) return self.update_item def update_item(self, item, caller=None, source=None, dest=None): return None def update_status(self): url = 'http://' + self._address + ':' + self._port + '/user/vars/basic' # read xml response xml = self._sh.tools.fetch_url(url, timeout=2) root = ET.fromstring(xml) for elem in root.iter(): for key in self._uri.keys(): try: if key == elem.attrib['uri']: for i in self._uri[key]: pu_type = i.conf['eta_pu_type'] i(elem.attrib[pu_type], caller='eta_pu') except: pass
Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Kommentar
-
Das /user/vars/basic was dort gelesen wird, ist aber vorher in die Heizung zu schreiben (via http PUT, was sh.tools leider nicht kann, was aber kein Problem ist).
Um dieses /user/vars/basic also einmalig(!) pro sh.py start in die Heizung zu schreiben, braucht es also "etwas", was einmal durch alle relevanten items wackelt und die URIs raussucht.
Was läuft also einmalig nur beim Start und hat Zugriff auf die Items?Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Kommentar
Kommentar