Respekt für deine Fummel-Arbeiten. Früher habe ich auch so etwas gemacht. Aber Augen und Hände spielen nicht mehr mit
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.
-
-
Kannst du bitte mal eine kleine Zeichnung von der Verschaltung posten? Hast du auch irgend wo eine Gen2 verbaut?
-
-
In diesem Skript z.B. auf einemPlus1PM wird ein Motion2 dazu verwendet, um fest zu stellen, ob in einem Zeitraum eine Bewegung stattgefunden hat. Beim Festellen einer Bewegung wird eine Meldung in der Console ausgegeben und der Timer zurückgesetzt. Findet im festgesetztem Zeitraum keine Bewegung statt, gibt es einen Alarm über die Signal App. Das Skript läuft, aber obwohl ich vor dem Motion 'rumtanze, wird keine Bewegung verarbeitet.
Der Motion hat folgende Action bei MOTION DETECTED:
An der mit <<<<<-------- gekennzeichneten Stelle meldet der Motion eine Bewegung. Mit alter FW wird das sauber verarbeitet.
Code
Alles anzeigen12:19 Zeit bis Alarm 228 Minuten 12:19:15 12:20 Zeit bis Alarm 227 Minuten 12:20:15 12:21 Zeit bis Alarm 226 Minuten 12:21:15 shelly_notification:163 Status change of switch:0: {"id":0,"aenergy":{"by_minute":[0.000,0.000,0.000],"minute_ts":1684837319,"total":0.000}} 12:22:00 12:22 Zeit bis Alarm 225 Minuten 12:22:15 shelly_notification:163 Status change of switch:0: {"id":0,"aenergy":{"by_minute":[0.000,0.000,0.000],"minute_ts":1684837379,"total":0.000}} 12:23:00 shos_rpc_inst.c:230 Sys.SetConfig via HTTP_in GET 172.16.0.101:53245 <<<<<-------- 12:23:04 12:23 Zeit bis Alarm 224 Minuten 12:23:15 shelly_notification:163 Status change of switch:0: {"id":0,"aenergy":{"by_minute":[0.000,0.000,0.000],"minute_ts":1684837439,"total":0.000}} 12:24:00 12:24 Zeit bis Alarm 223 Minuten 12:24:15 Shelly Plus1PM 4855199BFB6C| 1.0.0-beta1| 8d233746|
-
-
Neue JavaScript-Engine basierend auf Espruino - Bessere/erweiterte Unterstützung von JavaScript in Shelly-Geräten ist nun möglich.
Gibt es da schon Erkenntnisse, was das nun bedeutet? Ist dieser Teil jetzt hinfällig? Das steht ja noch: Shelly Scripts run on a modified version of mJS, which is part of the Mongoose OS framework. mJS.
Der Link von thgoebel gibt zwar eine Ahnung, aber was bedeutet das den nun für das Skripten?
Bei mir laufen 'alte' Skripte nur teilweise. Ohne weitere Info ist das ein ziemliches Herumgestochere. Bin für jede Info dankbar.
-
welches Skript läuft bei dir nett
Das Rentner Skript z.B.:
Code
Alles anzeigenlet Config = { //############# comfig ########################################################## net : "172.16.0.", motions : ["101"], delay : 240, report_at : ["10:15","10:17"], phone_number : "+4917xxxxxxxxx", sig_api_key : "xxxxxx" //############################################################################### }; let own_ip = ""; let time = ""; let err = ""; let url = ""; let activ = 1; let counter = -1; let ts = 0; let msent = 0; function replace (str,find,rep) { let ret_val = ""; for (let i=0; i<str.length; i++) { if (str[i] === find) { ret_val += rep; } else { ret_val += str[i]; } } return ret_val; } function send_message(message) { if (!activ) { if (message.indexOf('urgent') === -1 && message.indexOf('turned') === -1) { console.log(time + " Message not sent. Reason: Alarm turned off"); return; } } if (message.indexOf("urgent") > -1) { message = message.slice(message.indexOf("urgent+") + 7,message.length); message = "Alarm+" + message; } message = time + "%0A" + message; message = replace(message," ","%20"); if (Config.sig_api_key) { err = ""; let sig_url = "https://signal.callmebot.com/signal/send.php?phone="; sig_url += Config.phone_number; sig_url += "&apikey=" + Config.sig_api_key + "&text="; Shelly.call("http.get", {url:sig_url + message,timeout:30}, function(result, error_code, error_message) { if (result === null) { err = "null" print(time + " Message not sent. Reason: CMB " + err); return; } let aw = result.body; let f1 = aw.indexOf("ERROR"); if (f1 < 0) { f1 = aw.indexOf("Error"); } if (f1 > 0) { let f2 = aw.length; err = aw.slice(f1,f2); } if (aw.indexOf("Message sent to") > 0) { print(time + " Message sent"); msent += 1; return; } print(time + " Message not sent. Reason: CMB " + err); } ); } } function await_delay() { let rest = Shelly.getComponentStatus("sys").unixtime - ts + 2; time = Shelly.getComponentStatus("sys").time; print(time + " Zeit bis Alarm " + JSON.stringify(Math.ceil(Config.delay/60-rest/60)) + " Minuten"); for (let i=0; i<Config.report_at.length; i++) { if (time === Config.report_at[i]) { send_message("System online"); } } if (Shelly.getComponentStatus("sys").unixtime - ts + 2 > Config.delay) { Timer.clear(); ts = Shelly.getComponentStatus("sys").unixtime; print(time + " Alarm: Keine Bewegung in den letzten " + dauer + " Minuten"); Shelly.call("kvs.getmany", '{"key":"item"}', function(result, error_code, error_message) { let message = ""; for (let i=0; i < Config.motions.length; i++) { let j = Config.net + Config.motions[i]; message += j + "%0Aletzte Bewegung " message += result["items"][j]["value"]["time"]; message += " Uhr%0a%0A"; send_message(message); Timer.set(60000,false,await_delay); return; } } ); } else { Timer.set(60000,false,await_delay); } } function watch(event) { //print(JSON.stringify(event)); let x = event.info.ts - ts; ts = Shelly.getComponentStatus("sys").unixtime; if (x < 2){return}; time = Shelly.getComponentStatus("sys").time; Shelly.call("Shelly.GetConfig", "", function(result, error_code, error_message) { if (result.sys.ui_data.motion === undefined) { return; } let motion = result.sys.ui_data.motion; print(time + " " + "Bewegung erkannt von " + motion); if (msent > 0) { msent = -1; send_message("Bewegung erkannt von " + motion); } let conf = JSON.stringify({"config":{"ui_data":{}}}); Shelly.call("Sys.SetConfig", conf); conf = {"ts":ts,"time":time}; Shelly.call("kvs.set", {"key":result.sys.ui_data.motion,"value":conf}); build_url(motion); } ); } function get_own_ip() { Timer.clear(); Shelly.call("Shelly.GetConfig", "", function(result, error_code, error_message) { own_ip = result.wifi.sta.ip; Timer.set(5000,false,configure); } ); } function build_url(dev) { let uri = ""; uri += 'http://' + own_ip + '/rpc/Sys.SetConfig?config={"ui_data":{"motion":"'; uri += dev + '"}}'; url = 'http://' + dev + '/settings/actions?index=0&name=motion_on&enabled=true&url='; url += uri; //Shelly.call('http://' + dev + '/status'); Shelly.call("http.get", {url:url,timeout:30}); //print(url); return url; } function configure() { counter += 1; time = Shelly.getComponentStatus("sys").time; if (counter < Config["motions"].length) { ts = Shelly.getComponentStatus("sys").unixtime; let dev = Config["net"] + Config["motions"][counter]; console.log(time + " Konfiguriere Motion " + dev); build_url(dev); let conf = {"ts":Shelly.getComponentStatus("sys").unixtime,"time":time}; Shelly.call("kvs.set", {"key":dev,"value":conf}); Timer.set(5000,false,configure); send_message("System online"); return; } else { let conf = JSON.stringify({"config":{"ui_data":{}}}); Shelly.call("Sys.SetConfig", conf); print(time + " Konfiguration beendet"); print(time + " Zeit bis Alarm " + dauer + " Minuten"); counter += 10; Timer.clear(); Timer.set(60000,false,await_delay); ts = Shelly.getComponentStatus("sys").unixtime; return } } print("Start...") let dauer = JSON.stringify(Config.delay); Config.delay = Config.delay * 60; Shelly.addEventHandler(watch); Timer.set(1000,false,get_own_ip);
-
Sie können jederzeit über die lokale Web-Oberfläche des Geräts wieder auf Stable updaten.
Das ist zwar nur die Übersetzung, und @Olsche ist total unschuldig
Aber im Falle von @De kat ist das natürlich eine Katastrophe. In so einem Skript stecken teilweise Tage/Wochen Arbeit. Wenn das dann geschrottet wird, ist der Ärger vorprogrammiert. Devil hast natürlich Recht, musste mir nur mal Luft machen
-
Ist bei mir genau so. Aber ich hatte wohl das Glück, dass ich zurück konnte ohne den Verlust der Skripte.
Dokumentation war wohl noch nie die Spitzenleistung des Herstellers. WTF ist Espruino? Mag ja besser sein, als die bisherige Implementierung. Aber dann bitte erst die Dokumentation anpassen. Dann kann ICH entscheiden, ob ich das will. Keine Abwärtskompatibilität mit der Gefahr des Datenverlustes ist ein no go.
Wem soll denn so ein Quatsch nützen. Die Leute, die sich überhaupt mit so etwas wie Skripts auskennen, ist eh schon begrenzt. Sollen wir dann raten, wie das funktioniert? FUCK
-
Sollte gehen:
Code
Alles anzeigenemeters 0 power 0 pf 0.08 current 0.06 voltage 229.85 is_valid true total 2080238.7 total_returned 621.7 1 power 2.19 pf 0.51 current 0.02 voltage 234.46 is_valid true total 2213.3 total_returned 13535.2 2 power 0 pf 0.16 current 0.02 voltage 233.37 is_valid true total 10044.6 total_returned 5361.7 total_power 2.19
-
Das ist ja mal eine flotte Antwort. Dankeschön. Ich werde dein Reparaturangebot gerne annehmen. Im Moment wird das TRV noch gebraucht. Sobald es wärmer wird, nehme ich Kontakt zu dir auf. Nochmals vielen Dank
-
Moin,
ich habe es geschafft bei einem TRV die Reset-Taste zu schrotten. Ich würde gerne von unseren Harware-Spezialisten wissen, was man da tun kann. Dank des Teardowns von thgoebel habe ich das Ding schon öffnen können.
Gibt es Ersatzteile oder kann man einen Reset irgend wie durch Brücken von Kontakten erreichen? Leider sind meine Augen zu schlecht und meine Hände zu zittrig, um daran herum zu löten.
-
Leider hilft das dem TE alles wenig. Mach doch mal ein wenig mehr Angaben, dann können wir evtl. besser helfen. Ich weiß nicht, ob wir Fotos wollen, ist aber wohl unvermeidlich
-
LOL, das, was Bob raucht, will ich auch
-
Fehler tritt nicht bei jeder Ausführung auf, sondern nur wenn man das Programm startet, beendet und neu startet, also mitten in der Ausführung beendet.
So etwas habe ich auch oft. Ich habe immer vermutet, dass das an dem ganzen Kram der da asynchron läuft lag. Ich vermute, dass da noch der letzte Thread läuft und durch das beendete Skript seine Umgebung verliert und dann eine Fehlermeldung feuert. Aber, nur eine Vermutung. Python haut auch eine ganzen Strauß Fehlermeldungen raus, wenn man ein SKript mit noch laufende Threads abwürgt.
Das würde auch die Fehlermeldungen zu wechselden Zeilen erklären, wo kein Fehler ist, weil die Fehlermeldung sich auf einen Fehler im Teil des Threads bezieht.
-
war dann folgendes Ergebnis:
Das nenne ich mal ein qualifiziertes Feedback.
-
Das verdeutlicht das Problem:
Die Palz (als ejemalscha Regierungbeziag un als Gebied vum Bezirksverband Palz) is e Gebiet im daitsche Bundesland Rhoilond-Palz in Südweschddaitschlond, mit 5.400 km², wo ugfähr 1,4 Mio. Lait wohne. Fälschlichawais wärd se aach ofd als Rhoi-Palz bezaischned, awwa zu därre ghead aach nuch gonz Rhoihesse außa de Kärschegebiede, än Dääl vum haidsche Siedhesse, die haid Kurpalz genännde Gebiede, Dääle Siedhesse un alle Filialgebiede, korz alles, was frija mol Kurpalz waa, außa de Owwapalz. Schbäda hod märs don uf de siedlische lingsrhoinische Dääl bschrängd und noo de Fraihaidsgriesche aach nuch den noo Hesse gekummne Dääl (Rhoihesse) abgezoche. un haid vaschdehd mär unna Rhoipalz närnuch die Voddapalz.
Die greescht Schdädt sin Ludwichshafe, Lautre, Naischdadt, Bermesens, Schbaya, Zweebrigge un Landaach. Die Lait, wo do leebe, babbeln pälzisch.
LOL
Willkommen im Forum.
-
Ich gehe mal davon aus, dass diese Insel in einem Teil der Welt liegt, wo es schwierig sein wird, einen qualifizierten Elektriker zu finden.
Und selber basteln bei Strom und Wasser halte ich für lebensgefährlich!!!
Ohne FI mit abenteuerlichem Stromnetz und ohne Fachkunde. Ich würde dringend davon abraten.
-
Wenn man "1-Wire" und danach "BUS" schreiben würde, wäre das eindeutiger
LOL Korinthenkacker
Also könnte man ja mal was testen. Werde mal schauen, ob ich in meinem Fundus was mit
"1-Wire" und danach "BUS" finde
.
-
Das hatte ich dem TE hier schon verdeutlicht.
Stimmt es den nun das die NUR DS18B20 oder DHT22 können, oder auch andere Geräte mit:
ONE-WIRE-BUS
?