Ankündigung

Einklappen
Keine Ankündigung bisher.

Support Thread für das Webservices Plugin

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

  • jaykay
    antwortet
    Hallo,

    nach meinem Update letztes Jahr von 1.6 auf die 1.8.2 musste ich den WebService
    von "http://192.168.178.32:8384/ws/itemset/knxweb/" auf "http://192.168.178.32:8384/ws/items/" umstellen.
    PHP-Code:
    Debian 10 Buster
    Python 3.7.3 
    final
    SmartHomeNG Version1.8.2.master
    SmartHomeNG Plugins Version
    :1.8.2.master
    ...
    cherrypy 8.1.2 18.3.0
    ... 
    Nun bekomme ich beim Aufruf der URL ein "Oops, Error 500: ..." zurück.

    Im Log finde ich dann folgenden Error.
    PHP-Code:
    2022-06-23 22:18:09 ERROR cherrypy.error.140075533087464 [23/Jun/2022:22:18:09HTTP
    Traceback (most recent call last):
    File "/usr/local/lib/python3.7/dist-packages/cherrypy/_cprequest.py"line 638in respond
    self._do_respond(path_info)
    File "/usr/local/lib/python3.7/dist-packages/cherrypy/_cprequest.py"line 702in _do_respond
    response.finalize()
    File "/usr/local/lib/python3.7/dist-packages/cherrypy/_cprequest.py"line 898in finalize
    content self.collapse_body()
    File "/usr/local/lib/python3.7/dist-packages/cherrypy/_cprequest.py"line 856in collapse_body
    new_body b''.join(self.body)
    File "/usr/local/lib/python3.7/dist-packages/cherrypy/_json.py"line 24in encode
    > for chunk in _encode(value):
    File "/usr/lib/python3.7/json/encoder.py"line 431in _iterencode
    > yield from _iterencode_dict(o_current_indent_level)
    File "/usr/lib/python3.7/json/encoder.py"line 405in _iterencode_dict
    > yield from chunks
    File "/usr/lib/python3.7/json/encoder.py"line 405in _iterencode_dict
    > yield from chunks
    File "/usr/lib/python3.7/json/encoder.py"line 376in _iterencode_dict
    raise TypeError(f'keys must be str, int, float, bool or None, '
    TypeErrorkeys must be strintfloatbool or Nonenot date 
    Was ich merkwürdig finde ist das es unmittelbar nach einem "systemctl restart smarthome" kurz funktioniert und dann kommt die Fehlermeldung.

    Hat jemand einen Tipp wie ich mehr Informationen von cherrypy herausbekommen kann?

    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Hallo,

    nach einem update von 1.6 auf 1.8.2 habe ich folgendes Problem mit dem webservice plugin.
    Ich habe fast immer verschiedene webservice_set definiert wie z.B. global & knxweb oder wetter & knxweb damit jeweils nur die benötigten daten geliefert werden.
    item-yaml
    PHP-Code:

    Global:
    ...
      
    FensterStatus:
        
    nameFensterStatus
        type
    bool
        webservices_set
    :
            - global
            - 
    knxweb
        webservices_data
    full
    .... 
    Unter 1.6 lieferte die URL http://192.168.178.32:8384/ws/itemset/knxweb/ dann alle items zurück die knxweb enthalten.
    Analog dazu hätte ich erwartet das unter 1.8.2 http://192.168.178.32:8384/ws/itemset/['knxweb']/ das gleiche liefert.

    Statt dessen funktioniert nur die Kombinaton http://192.168.178.32:8384/ws/itemset/['global',%20'knxweb']/ oder es darf nur ein webservice_set definert sein global oder knxweb.

    Auf der Plugin Webseite wird auch "nur" ein link zur kombinierten Liste geliefert Item-Set: ['global', 'knxweb']. Ich hätte ein Link für Global und einen für KNX erwartet ;-).
    Ist das ein Bug oder gewollt so gebaut?

    PlugIn Webseite:

    Plugin : webservices v1.6.2
    Plugin : Aktiv
    Modus Alle Items
    Tipp: Durch Anhängen des Parameters "?mode=val|full" kann erzwungen werden, dass das Item / Itemset mit vollen oder einfachen Daten zurückgeliefert wird. Ansonsten greift die Konfiguration im Item via webservices_data.
    Die folgenden Items und Sets können über die REST und die Simple WebService API gelesen und (bei str, num und bool Items) verändert werden:



    Einen Kommentar schreiben:


  • Morg
    antwortet
    Moin,

    ich bin auf ein "Problem" gestoßen, bei dem ich noch nicht ganz sicher bin, wie ich das abstellen kann.

    Ich nutze das ws-Plugin mit 'mode': 'all' und greife über URLs auf zwei Items zu.

    Das erzeugt mir auf der Konsole regelmäßig (bei jedem Zugriff) folgende Meldungen im Log:

    Code:
    192.168.2.231 - - [12/Dec/2020:18:07:55] "GET /ws/items/d.stat.knx.last_data HTTP/1.1" 404 3872 "" "Python-urllib/3.7"
    192.168.2.231 - - [12/Dec/2020:18:07:55] "GET /ws/items/d.stat.knx.activity HTTP/1.1" 404 3871 "" "Python-urllib/3.7"
    Wie man sehen kann, sind die nicht durch den Log-Formatter gelaufen, also müssen sie irgendwo "anders" herkommen. Ich vermute, dass cherrypy die intern irgendwo erzeugt.

    Habt ihr damit schonmal zu tun gehabt, oder eine Idee, wie man das abstellen kann?

    Einen Kommentar schreiben:


  • psilo
    antwortet
    _websocket hat nichts mit webservice zu tun ?

    Einen Kommentar schreiben:


  • gama
    antwortet
    Hallo,

    ich bin mir nicht sicher, ob das der richtige Ort ist, aber ich haben folgenden Fehler im Log und keine Ahnung woher der kommt bzw. wo ich zum debuggen anfangen soll. Vielleicht habt Ihr eine Idee...

    Code:
    _websocket.json_parse exception: 'NoneType' object has no attribute 'split'

    Einen Kommentar schreiben:


  • psilo
    antwortet
    das plugin macht keine post requests gegen beliebige externe URLs, das plugin stellt SHNG Items als webservice via URL bereit, die du bspw mit get abfragen und post bedaten kannst.

    Für schnittstellen anderer tools einfach Requests nutzen.

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Hallo, hoffe bin in diesem Thread richtig. Ich hab mal ne Frage.
    Ich hab SmarthomeNG 1.6 und das WebService plugin aktiviert.
    Ein Item provisorisch angelegt:

    Code:
    Wasserverbrauch:
        Softliq:
            type: num
            webservices_set: 'MySet1'
            webservices_data: 'val'
    ich möchte meine Wasserenthärtungsanlage Softliq:SC23 abfragen und die Werte zur Auswertung in die SQL Datenbank schreiben (Smartvisu Prot's).

    Laut Beschreibung läuft das über ein POST-Request:

    Code:
    POST [URL]http://[/URL][IP-DER-ANLAGE]/mux_http HTTP/1.1
    Content-Length: 69
    Content-type: application/x-www-form-urlencoded
    id=625&show=D_A_1_7|D_A_2_3|D_A_1_6|D_A_2_2|D_K_1| D_K_2|D_Y_5|D_Y_13~
    Jetzt meine Frage, was soll ich in das Item und mit welchen Kontext schreibe? geht das über diesen Weg überhaupt?

    Danke schon mal!
    Zuletzt geändert von bmx; 27.03.2020, 11:30.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Ja, nimm mqtt.

    Einen Kommentar schreiben:


  • Onkelandy
    antwortet
    mqtt wäre auf jeden Fall eine gute Alternative. Funzt bei mir einwandfrei, um zwei SmarthomeNG Instanzen teils zu synchronisieren.

    Einen Kommentar schreiben:


  • SMarcus
    antwortet
    OK, das mit der Logik klingt gut. Da könnte ich mich einarbeiten. Alles was ich hin bekommen müsste wäre, das SHNG einen

    http://192.168.178.84/control?cmd=GPIO,14,0

    oder einen

    http://192.168.178.84/control?cmd=GPIO,14,1

    versendet, je nachdem ob der GPIO14 low oder high sein soll. Und anscheinend gibts da schon ein Topic das etwas Hilfestellung gibt:

    https://knx-user-forum.de/forum/supp...ogik-versenden

    Danke für den Tip.

    Gruss
    Marcus

    Einen Kommentar schreiben:


  • psilo
    antwortet
    es kommt drauf an welche technologie die "gegenstelle" unterstützt.. requests kannst du auch in einer logik benutzen. du musst aber halt wissen, wie der webservice aussieht .. nimmt er json daten an? welches format? usw... das kann man nicht generisch seitens shng implementieren mqtt habe ich noch nie genutzt, dazu können andere mehr sagen

    Einen Kommentar schreiben:


  • SMarcus
    antwortet
    Danke. Ich glaub so fit bin ich in Python noch lange nicht, ein Plugin zu schreiben (so habe ich den Hinweis auf die python lib "requests" verstanden). Wäre also die Alternative die bidirektionale Schnittstelle mittels MQTT auszuführen. Oder gibt es (bessere) Alternativen die ich übersehe?

    Einen Kommentar schreiben:


  • psilo
    antwortet
    das plugin stellt eine webservice schnittstelle zu shng bereit. um webservice anders rum anzusprechen (die auf x arten oder standards implementiert sein koennen) gibt es die python lib "requests"

    Einen Kommentar schreiben:


  • SMarcus
    antwortet
    Hallo,

    Inspiriert durch die Beispiel-Implementierungen im SHNG Blog (Danke an Sisamiwe und psilo) habe ich einige Anwendungen auf Basis ESP8266 (Wemos D1 Mini Pro) mittels ESP Easy installiert, die eigendlich ganz gut laufen (eigendlich, weil ich auch betroffen bin von den gelegentlichen Reboots durch den Hardware Watchdog, ist aber OT). Die Sensoren liefern Werte ins SHNG und in die SV so wie sie sollen. Ich habe aber eine Applikation in der ich idealerweise mittels des Simple Webservices HTTP-Interface auch die GPIO´s des ESP8266 steuern möchte - also eine bidirektionale Verbindung aufbauen möchte.

    Nachdem ich mir den Blog und den Forumbeitrag durchgelesen haben, glaube ich aber verstanden zu haben das eine bidirektionale Verbindung und das Steuern der GPIOs über das (simple) Webservices Plugin in SHNG nicht geht, nur das "Empfangen" der Werte?

    Gruss
    Marcus

    Einen Kommentar schreiben:


  • jaykay
    antwortet
    Da brauche ich erst noch ein wenig mehr Python & GIT know how ;-) Habe erst mal nur das Abfragen ermöglicht, in dem ich an ein paar Stellen aus ['str', 'bool', 'num'] folgendes gemacht:
    ['str', 'bool', 'num','list','dict']

    Den Rest habe ich (noch) nicht verstanden...

    Einen Kommentar schreiben:

Lädt...
X