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.
Funktioniert leider nicht. Ich werd wohl mal weiter suchen. Aber einen Versuch war es wert ;-)
Bei
Code:
sh.fb.cancel_call()
etc. musst du natürlich noch das "fb" an den Namen anpassen, mit dem Du das Plugin lädst. Das steht im Admin Interface -- > Plugins --> PluginListe --> KonfigName
Ich will eigentlich die aktuell laufende Diskussion nicht unterbrechen und gehe eigentlich davon aus, dass mir ein kleiner Tipp reicht um weiter zu kommen:
ich würde gerne über das AVM Plugin DTMF Befehle an meine SIEDLE DoorCom Anlage senden. (z.B. über "#811" den Kettenruf aktivieren.)
Code:
sh.fb.start_call("**1")
// Hier weiss ich nicht was ich machen muss um die Folge "#811" senden zu können.
sh.fb.cancel_call()
Kann mir hier jemand einen kurzen Tipp geben ob das irgendwie geht. Wenn ja, wäre es toll mir einen kleinen Schubbser in die richtige Richtung zu geben nach was ich suchen muss. Hab leider absolut nichts zu dem Thema gefunden.
Die Fehlermeldung besagt, dass irgendein Element beim Zusammensetzen von device_string nicht vom Typ str ist. Welches das ist, müsstest Du herausfinden und mit einer Umwandlung str() in den Griff bekommen können.
Es klappt übrigens mit folgender Logic, aber nur wenn ich den Host Name abfrage.
Soblad ich IP und MAC hinzufüge bekomme ich die Fehlermeldung aus Kommentar #818
Ich bin aber mit dem Name zufrieden. Danke für euren Support.
Code:
hosts = sh.AVMRouter.get_hosts(True)
hosts_eg = sh.RepeaterEG.get_hosts(True)
hosts_og = sh.RepeaterOG.get_hosts(True)
for host_eg in hosts_eg:
new = True
for host in hosts:
if host_eg['mac_address'] == host['mac_address']:
new = False
if new:
hosts.append(host_eg)
for host_og in hosts_og:
new = True
for host in hosts:
if host_og['mac_address'] == host['mac_address']:
new = False
if new:
hosts.append(host_og)
string = []
for host in hosts:
device_string = host['name']
string.append(device_string)
sh.AVM.devices.device_list(string)
Zeile 24 ist nach wie vor das Problem. Ich könnte nur mit 'name' leben aber das funktioniert wegen der fehlenden list auch nicht.
Was für ein Problem gibt es denn jetzt? Bist Du Dir sicher, dass Du die Variable hosts vorher sinnvoll initialisiert hast?
Um das zu überprüfen, kannst Du vor der for Schleife den Inhalt von hosts mal Loggen.
Mit der Zeile sh.AVM.devices.device_list(string) weist Du dem Item das eigentlich eine Liste sein soll einen String zu. Das scheint aber so schon in der Doku zu stehen.
Die Zeile 24 geht auf die Bretter, wenn ein Element des dicts mit None belegt ist. Du könntest dort schreiben
hosts = sh.AVMRouter.get_hosts(True)
hosts_eg = sh.RepeaterEG.get_hosts(True)
hosts_og = sh.RepeaterOG.get_hosts(True)
for host_eg in hosts_eg:
new = True
for host in hosts:
if host_eg['mac_address'] == host['mac_address']:
new = False
if new:
hosts.append(host_eg)
for host_og in hosts_og:
new = True
for host in hosts:
if host_og['mac_address'] == host['mac_address']:
new = False
if new:
hosts.append(host_og)
string = ''
for host in hosts:
device_string = host['name']+':'+host['ip_address']+', '+host['mac_address']
string += device_string
sh.AVM.devices.device_list(string)
Item:
Code:
AVM:
devices:
device_list:
type: list
visu_acl: rw
Nachdem ich die Logic neu geladen und ausgelöst habe kommt:
Code:
2022-08-29 09:01:07 ERROR logics.AVM_Hosts In der Logik ist ein Fehler aufgetreten:
Logik 'AVM_Hosts', Datei '/usr/local/smarthome/logics/AVM.py', Zeile 24
Hauptroutine der Logik, Exception: can only concatenate str (not "NoneType") to str
Sobald ich in Zeile 24 nur "host['name']" verwende klappt es zwar aber ich bekomme eine andere Fehlermeldung ins LOG
Code:
WARNING lib.item.item Item AVM.devices.device_list: value "PC-DC-F7-56-D3-0F-80PC-192-168-0-36PC-A8-DB-03-B8-46-35PC-F8-C3-9E-15-E5-39" does not match type list. Via Logic None
1) Du fängst mit einem leeren String an, lässt die <li> und </li> in device_string weg und lässt auch die Addition von </ul> am Ende weg.
2) Das item im Beispiel heißt avm.devices.device_list. Also muss Dein item auch so benannt werden, oder Du änderst die Anweisung in der Logik in sh.hier_kommt_Dein_item(string). visu_acl sollte auch noch gesetzt werden, damit die Visu auf das item zugreifen kann.
Ein Beispiel für eine Logik steht schon in der Doku. In Deinem Fall kannst Du auf die beiden Funktionsaufrufe für die Repeater und die entsprechenden Schleifen verzichten. Zudem musst Du die html-Tags <ul> und <li> weglassen, denn die fügt das SV-Widget basic.listview später selbst ein.
Gruß
Wolfram
Vielen Dank für deinen Beitrag.
2 Fragen ergeben sich:
1)
Code:
string = '<ul>'
for host in hosts:
device_string = '<li><strong>'+host['name']+':</strong> '+host['ip_address']+', '+host['mac_address']+'</li>'
string += device_string
string += '</ul>'
sh.avm.devices.device_list(string)
wie muss hier der String aussehen wenn ich die html-Tags weglassen soll?
Ein Beispiel für eine Logik steht schon in der Doku. In Deinem Fall kannst Du auf die beiden Funktionsaufrufe für die Repeater und die entsprechenden Schleifen verzichten. Zudem musst Du die html-Tags <ul> und <li> weglassen, denn die fügt das SV-Widget basic.listview später selbst ein.
Könnte mir bitte jemand helfen " get_hosts(only_active) "in eine Logic/item zu packen um es in weiterer Folge via basic.listview in SV auszugeben?
Hab irgendwie grade keinen Plan wie ich das machen muss.
Vielen Dank Sisamiwe, das war’s! Komisch, dass das nicht default auf true ist.
Im log hab ich dazu auch nichts gesehen. Wäre vielleicht hilfreich, eine Warnung zu haben.
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.
Einen Kommentar schreiben: