In der Tat gabs hier sogar eine Version mit neuer sh.tools.
Mal sehen, ob wir das nochmal machen. Ich schaue mir Deinen Hinweis mal an.
Neben weiteren ähnlichen Geräten kann ich mir CONNECT auch vorstellen.
Na schaun wir mal.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Plugin Pelletkessel
Einklappen
X
-
Hallo,
klar könnte man. Bin auf den diff gespannt. Ich würde es aber wahrscheinlich über das requests Modul machen.Zitat von greentux Beitrag anzeigenVl. könnte man sh.tools um weitere HTTP Request Types erweitern? GET, DELETE, PUT bräuchte ich.
glaube ich nicht.Zitat von greentux Beitrag anzeigenVermutlich findet sich derlei in verschiedenen Plugins.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Erste Version uploaded nach develop.
ToDo:
- Schreibaktionen
- Raw Value auslesen
- Fehler auslesen
Vl. könnte man sh.tools um weitere HTTP Request Types erweitern? GET, DELETE, PUT bräuchte ich. Vermutlich findet sich derlei in verschiedenen Plugins.
Grüße
Einen Kommentar schreiben:
-
mir nicht bekannt. Steht aber in Post #53 in diesem Thread.
Einen Kommentar schreiben:
-
aaahhhhh.
Gibts ein Plugin, wo das mal bischen kommentiert ist?
Einen Kommentar schreiben:
-
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?
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
ungefähr so:
hthCode: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
Einen Kommentar schreiben:
-
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 danach
Aber ok, da sind die items noch nicht da.
Also muss ich es in parse_item irgendwie reinbauen. Mal sehen.
Einen Kommentar schreiben:
-
Hi,
die Plugins fangen erst mit der Arbeit an, wenn alle Items geparsed sind.
Dann wird die Methode run aufgerufen.
Wozu brauchst Du einen externen Helper? Und was ist das?
Bis bald
Marcus
Einen Kommentar schreiben:
-
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.
Einen Kommentar schreiben:
-
Hi,
bei dem init der Plugins gibt es die Items noch nicht.
Wieso sollte parse_item periodisch aufgerufen werden? Jedes Item ruft die Methode einmalig für jedes Plugin auf.
Bis bald
Marcus
Einen Kommentar schreiben:
-
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ß
Einen Kommentar schreiben:
-
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ß
Einen Kommentar schreiben:


Einen Kommentar schreiben: