Es geht gar nicht um meinen Mini, der ist verschmerzbar. Das sollte grundsätzlich geklärt werden.
Beiträge von ostfriese
VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
-
-
Danke Thomas. Wenn es keine andere Lösung gibt, werde ich, dein Interesse vorausgesetzt, das Opfer in deine Klinik geben.
-
Habe das Problem auch. Siehe hier.
Versuche es mit Dauerfeuer. Im o.g. weiter unten.
-
Kurzes Update. Beide Skripte laufen und befeuern den Mini mit dem Befehl, das entsprechende Skript zu stoppen. Sowohl über http als auch über ws.
Der Shelly macht im Minutentakt einen Reboot, vermutlich, weil der Prozessor überhitzt. Das er eine Reboot macht, merkt man am Klacken des Relais, wenn ein geschlossener Schalter angeschlossen ist. Der Shelly ist nicht einmal kurzzeitig per Ping erreichbar.
Ich lasse das jetzt mal über Nacht laufen, in der Hoffnung, dass irgend ein Befehl mal durchkommt.
-
-
So, habe mich mal schlau gemacht. Habe es auf einem funktionierenden Shelly getestet. So kann man mit Python Dauerfeuer auf ws senden:
Code
Alles anzeigen#!/usr/bin/env python3 # -*- coding: utf-8 -*- import websockets import asyncio import time async def stop(): try: uri = "ws://172.16.0.106/rpc" async with websockets.connect(uri) as websocket: await websocket.send('{"id":1,"method":"Script.Stop","params":{"id":7}}') #await websocket.recv() except: pass if __name__ == "__main__": while(True): asyncio.run(stop()) time.sleep(0.01)
Hat aber leider, bis jetzt, auch nichts gebracht.
-
Hast du ein Beispiel, wie ich den Befehl per ws absetze?
-
Teste ich...
-
Gute Idee, habe ich auch schon mit einem Python-Skript versucht. Läuft jetzt seit Stunden. Ohne Erfolg.
Code
Alles anzeigen#!/usr/bin/env python3 # -*- coding: utf-8 -*- import requests, json, time def get_url(url): print('try ' + url) r = requests.get(url, timeout = 0.01) text = r.text return json.loads(text) count = 1 uri = '172.16.0.106' while 1: try: count += 1 aw = get_url('http://' + uri + '/rpc/Script.Stop?id=7') if aw: print('success ' + str(count)) break except: time.sleep(0.1)
-
Danke dir. Bin mal gespannt, was die dazu sagen.
-
Habe ich mir gedacht. Habe den Mini bei Seite gelegt, falls noch eine Idee hier auftaucht.
-
Wenn ihr euren Shelly Gen 2/3 nachhaltig zerstören wollt, macht folgendes:
Dieses Skript installieren und auf automatischen Start nach Reboot stellen.
Jetzt rebooten.
ACHTUNG: DER SHELLY IST JETZT ENDGÜLTIG ZERSTÖRT!!!!
Warum?
Der Shelly bootet und startetet die Endlosschleife des Skriptes. Ihr habt keine Chance mehr, den Shelly zu erreichen, weil die Schleife den Prozessor 100% auslastet.
Selbst ein Rücksetzen in den Werkzustand gelingt nicht mehr, weil der Shelly dazu vollständig booten muss. Hier läuft dann wieder die Endlosschleife.
Wenn jemand eine Lösung kennt, wie man den Shelly dazu veranlassen kann, das Skript nicht auszuführen,
bin ich dankbar. Ich bin durch einen Tippfehler in einem Skript selbst Opfer geworden und so auf diese kuriose Lücke gestoßen.
Mein Plus 1 Mini G3 ist tot.
-
Der Ruuvi sendet all 10 Sekunden, immer. Schlafen kennt der nicht.
Die Shelly sollen auch einen Beacon-Mode haben, ist aber wohl noch bugie und er sendet seltener.
-
Du wirst begeistert sein vom Ruuvi
-
Nein! Ein Shelly verarbeitet per Skript die Werte. Skripte auf reinen BLE gibt es nicht.
-
-
-
das Fritz! - Gastnetz unterbindet die Kommunikation der Geräte untereinander.
#2 gelesen?
-
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Setze die Option WLAN-Geräte dürfen untereinander kommunizieren.
-
Wenn man den Status statt der Konfiguration abfragt, geht das auch mit DHCP.
Alt:
getComponentConfig
Codeprint('Your url is:'); uri = 'http://' + Shelly.getComponentConfig("wifi").sta.ip + '/script/' + Shelly.getCurrentScriptId() + '/test?switch_on'; print(uri);
bringt nichts, da ich ja nach der konfigurierten IP frage. Ist bei DHCP nicht vorhanden.
Neu:
getComponentStatus
Codeprint('Your url is:'); uri = 'http://' + Shelly.getComponentStatus("wifi").sta_ip + '/script/' + Shelly.getCurrentScriptId() + '/test?switch_on'; print(uri);
klappt immer. Hier frage ich nach dem Status. Da ist die IP enthalten.
Fazit: Immer die neue Methode benutzen, da beim Status immer eine IP zu finden ist, egal ob fix oder DHCP.