Ankündigung

Einklappen
Keine Ankündigung bisher.

AVM Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Sisamiwe
    antwortet
    Zitat von kex Beitrag anzeigen
    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

    Zudem hat das bislang (warum auch immer) nicht zuverlässig funktioniert, so dass ich es so gemacht habe:
    https://knx-user-forum.de/forum/supp...ngeln-asterisk

    Probier mal.

    Einen Kommentar schreiben:


  • kex
    antwortet
    Funktioniert leider nicht. Ich werd wohl mal weiter suchen. Aber einen Versuch war es wert ;-)

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Code:
    sh.fb.start_call("**1")
    sh.fb.start_call("#811")
    ...
    sh.fb.cancel_call()
    hast Du schon probiert?

    Einen Kommentar schreiben:


  • kex
    antwortet
    Hallo zusammen,

    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.

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    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.

    Gruß
    Wolfram

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Hi,

    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)

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das folgende wird immer nur einen String liefern:
    Zitat von fuxl66 Beitrag anzeigen
    Code:
    string = ''
    for host in hosts:
        device_string = host['name']+':'+host['ip_address']+', '+host['mac_address']
        string += device_string
    Die variable string wird leer vorbelegt und in der for Schleife wird für jeden host an diesesn String ein String angehängt.

    Da musst Du schon eine Liste befüllen, wenn am Ende eine Liste rauskommen soll. z.B. so:
    Code:
    string = []
    for host in hosts:
        device_string = host['name']+':'+host['ip_address']+', '+host['mac_address']
        string.append(device_string)
    (Du solltest dir Variable aber vielleicht von string in string_list umbenennen)


    Zitat von fuxl66 Beitrag anzeigen
    Code:
    device_string = host.get('name','')+':'+host.get('ip_address','')+ ', '+host.get('mac_address','')
    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.

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Code:
    device_string = host.get('name','')+':'+host.get('ip_address','')+ ', '+host.get('mac_address','')
    Zeile 24 ist nach wie vor das Problem. Ich könnte nur mit 'name' leben aber das funktioniert wegen der fehlenden list auch nicht.

    Einen Kommentar schreiben:


  • bmx
    antwortet
    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

    Code:
    device_string = host.get('name','')+':'+host.get('ip_address','')+ ', '+host.get('mac_address','')

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Es klappt leider noch nicht.
    Logic:
    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']+':'+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
    Zeile24 = device_string = host['name']+':'+host['ip_address']+', '+host['mac_address']

    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
    Wo liegt der Fehler?

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    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.

    Gruß
    Wolfram

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Zitat von wvhn Beitrag anzeigen
    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?

    2)
    Code:
    device_list:
    type: list
    mehr braucht es in diesem Item nicht?

    Sorry für meine (blöden) Fragen.

    Einen Kommentar schreiben:


  • wvhn
    antwortet
    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
    Zuletzt geändert von wvhn; 28.08.2022, 10:20.

    Einen Kommentar schreiben:


  • fuxl66
    antwortet
    Hi,

    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.

    Danke
    Markus

    Einen Kommentar schreiben:


  • Giase
    antwortet
    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.

    Danke nochmal!
    //giase

    Einen Kommentar schreiben:

Lädt...
X