Werde ich im Blog ausführlich vorstellen, sobald es fertig ist.
EDIT:
Hundehütte fehlt noch.
Ne, solange die in Reichweite des WoMo ist, ist die mit drin.
Werde ich im Blog ausführlich vorstellen, sobald es fertig ist.
EDIT:
Hundehütte fehlt noch.
Ne, solange die in Reichweite des WoMo ist, ist die mit drin.
Klar, ist ja kein Geheimnis.
Ich baue eine kleine, webbasierte, Zentrale für ein WoMo. Läuft alles auf EINEM Gen 2. Umfasst die Erfassung und Steuerung von Temperatur, Luftfeuchtigkeit und eine Alarmanlage. Sieht bis jetzt so aus: (Die Steuerung von Temperatur und Luftfeuchtigkeit ist noch nicht fertig)
@66er Ist übrigens passiert, als ich an "deinem" Projekt gearbeitet habe.
In der Api steht, dass so ein Skript beim Booten deaktiviert wird. Offensichtlich passiert das nicht.
ZitatNon-blocking execution
Shelly scripts are executed in an environment which shares CPU time with the rest of the firmware. Code in the scripts runs on the main system task and is not allowed to block for long. This is why any APIs which can potentially take a long while are callback-based. Still, it is possible to write code which will hoard the CPU for longer then acceptable. Such code may cause issues with other firmware features, communication or even cause the device to crash. One obvious example is an infinite (or near infinite) loop:
If a script manages to crash the device the system will detect this and disable the script at the next boot.
Da ich auch in der Ratlosigkeitswüste bin, folge ich auch einer Fata Morgana.
Fahre jetzt für den Rest der Nacht das http Skript mit deinem Vorschlag...
Es geht gar nicht um meinen Mini, der ist verschmerzbar. Das sollte grundsätzlich geklärt werden.
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:
#!/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)
Alles anzeigen
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.
#!/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)
Alles anzeigen
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