Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Bin zwar nicht der Meister, aber verstehe das Problem aber auch nicht:
URI in zwei Items, zusätzlich (wie bei zig anderen Plugins) ein zweites eta_xxxxx was den Subtyp (oder was auch immer gemeint ist) selektiert. In der parse_item dann entsprechend einsortieren/speichern etc.?
[etatest]
[[testuri]]
eta_pu_uri = 112/10021/0/0/12000
[[[strValue]]]
eta_pu_type = strValue
type = str
[[[unit]]]
eta_pu_type = unit
type = str
Ich hab keinen Code im Kopf aber in Worten:
- in parse_item nach "eta_pu_type" suchen
- bei einem Treffer das parent suchen (hier: 112/10021/0/0/12000)
- jetzt eta_pu_uri im plugin mit eta_pu_type verküpfen
- im plugin dann die uri auslesen und je nachdem wieviele childs (eta_pu_type) es gibt eben unterschiedlich verarbeiten
Das geht beim Onewire seit 0.9 (also seit x Monaten? - kein Plan).
Zumal das ja nur von der Programmierung des Plugins abhängt. Wenn du dir den üblicherweise benutzten Plugin-Code mal anschaust siehst du, dass du eh "alle Items" zugeführt bekommst und anhand deines Attributes filterst. Da kannst du auch noch 10 weitere Attribute vergeben die du dann intern geeignet verwurschtelst.
/edit:
Mirko, dass braucht er nicht unbedingt. Einfach so wie in zig anderen Plugins ein zweites Attribut. Irgendwann will es nur einen Wert und will nicht "die Kinder suchen" etc. Einzig wenn eine URI wirklich viele Untertypen hat könnte das Sinn machen. Kann man sogar in meinem Squeezebox Plugin "bewundern": Übergeordnetes Item hält (optional) die MAC des Radios, die Childs haben aber auch sogar noch mehrere Attribute. Alles Zusammenrühren, fertig.
Mmmh, wir hatten das eigentlich vorhin genau so probiert und sh.py wollte es irgendwie nicht.
Gut, wenns gehen sollte, gehts da wohl morgen nochmal ran.
Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Übergeordnet spart halt doppelte Einträge in der config, ist aber vielleicht nicht intuitiv genug. Ich selbst hab noch große Probleme mit Python als "Objektsprache".
Vielleicht ist es schon zu spät - aber ich sehe da spontan kein "find_children" o.Ä. und du benutzt doch auch in EINEM Item "ebus_type" UND "ebus_cmd" (was übrigens, wenn mal nicht definiert, den Parser in den Abgrund reißt).
Das meinte ich ja ... das wäre doch so wie die von Dir vorgeschlagene Variante (jedes item erhält die uri und einen anderen eta_pu_type, braucht dann aber auch einen anderen namen) ?
Hi! Nur genauso wie beim "ebus_type" auf Vorhandensein prüfen. Oder halt try/catch. Ich habe es nur gesagt, weil ich nicht sicher bin, ob wenn das parse_item in einem Plugin stirbt evtl. alle weiteren Plugins mitgerissen werden.
[etatest]
[[testuri]]
eta_addr = 112/10021/0/0
[[[strValue]]]
type = str
eta_key = 12000
[[[unit]]]
type = num
eta_key = 12153
Bist Du Dir sicher, das ich dann im Item strValue tatsächlich Zugriff auf eta_addr habe?
Mein Beispiel sähe in wirklich ja so aus:
Code:
[etatest]
[[testuri]]
eta_addr = 112/10021/0/0/12000
[[[strValue]]]
type = str
eta_key = unit
[[[unit]]]
type = str
eta_key = value
Und im Plugin möchte ich nun für jeden der beiden Items (nix anderes ist die Schachtelung ja) die Werte von eta_addr holen und abhängig von eta_key den entsprechenden Wert zurückliefern.
Soweit ich den Test gestern Abend in Erinnerung habe, hatten wir dann keinen Zugriff auf eta_addr ...
Derzeit zwischen Kistenauspacken und Garten anlegen.
Baublog im Profil.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar