Willkommen im Forum.
Ich würde den Reset noch einmal machen. Ruhig den Knopf mal > 30 Sekunden drücken. Dann über die App neu einbinden.
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.
Willkommen im Forum.
Ich würde den Reset noch einmal machen. Ruhig den Knopf mal > 30 Sekunden drücken. Dann über die App neu einbinden.
Das das so lange ist, liegt nicht am Netz. Die TRV schlafen die meiste Zeit.
In meinem Script bekommen die alle 165 Sekunden ein /psovrd2
Override powersave mode for the next 180 seconds and set powersave mode to beacon skip to 10
Das hält den Wifi Adapter wach und davon ab sich dauernd neu wegen Aufwachen mit dem Repeater zu verbinden.
Laut Datenblatt verbraucht das nur ein Paar micro Ampere.
Ich werde mal deine Idee so anpassen, das ich sie mitlaufen lasse. Mal sehen, was passiert, wenn ein TRV im Fehlermode ist.
Ahhhh, ist ein line feed
Ja, aber interessant ist
vor clean:
{"wifi_sta":{"connected":true,"ssid":"1","ip":"172.16.0.76","rssi":-74},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"19:23","unixtime":1682270593,"serial":0,"has_update":false,"mac":"60A423DB01D0","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"thermostats":[{"pos":0.0,"target_t":{"enabled":false,"value":15.0,"value_op":8.0,"units":"C"},"tmp":{"value":16.5,"units":"C","is_valid":true},"schedule":true,"schedule_profile":1,"boost_minutes":0,"window_open":false}],"calibrated":true,"bat":{"value":96,"voltage":3.826},"charger":false,"update":{"status":"unknown","has_update":false,"new_version":"20220811-152343/v2.1.8@5afc928c","old_version":"20220811-152343/v2.1.8@5afc928c","beta_version":null},"ram_total":97280,"ram_free":31144,"fs_size":65536,"fs_free":59264,"uptime":140238,"fw_info":{"device":"shellytrv-60A423DB01D0","fw":"20220811-152343/v2.1.8@5afc928c"},"ps_mode":0,"dbg_flags":0}\x0a
nach clean:
{"wifi_sta":{"connected":true,"ssid":"1","ip":"172.16.0.76","rssi":-74},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"19:23","unixtime":1682270593,"serial":0,"has_update":false,"mac":"60A423DB01D0","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"thermostats":[{"pos":0.0,"target_t":{"enabled":false,"value":15.0,"value_op":8.0,"units":"C"},"tmp":{"value":16.5,"units":"C","is_valid":true},"schedule":true,"schedule_profile":1,"boost_minutes":0,"window_open":false}],"calibrated":true,"bat":{"value":96,"voltage":3.826},"charger":false,"update":{"status":"unknown","has_update":false,"new_version":"20220811-152343/v2.1.8@5afc928c","old_version":"20220811-152343/v2.1.8@5afc928c","beta_version":null},"ram_total":97280,"ram_free":31144,"fs_size":65536,"fs_free":59264,"uptime":140238,"fw_info":{"device":"shellytrv-60A423DB01D0","fw":"20220811-152343/v2.1.8@5afc928c"},"ps_mode":0,"dbg_flags":0}0
Ganz am Ende steht vorher
und hinterher 0
Was soll das bedeuten???
null 19:17:57
Error: Shelly.call() 19:17:57
Response: null 19:17:57
eMsg: Deadline exceeded: HTTP request timed out!
Timeout auf 30 erhöht:
Ausgabe:
19:19
Habe noch mal den Anbieter gefragt. Hier die Antwort:
Hello Michael,
That is for whatsapp. Signal, Telegram and Facebook Messenger are completely free.
The WhatsApp API is completely different. The API consumes a massive amount of resources and I was forced to implement WAF, load balancer, and much more infrastructure to provide the WhatsApp API.
Best regards,
Borja.
Ich habe das, was du oben vorgeschlagen hast, mal in einen call auf den status eingebaut.
Ich hoffe, das ist so, wie du meinst. Leider stürzt damit nicht nur das Skript ab, sondern gleich der ganze Shelly
Shelly.call("http.get", {url:"http://172.16.0.52/status"},
function(res, err_code, err_message) {
print(typeof(res.body));
let uncleanString = res.body;
let cleandString = "";
for (let i = 0; i < uncleanString.length; i++) {
let charCode = uncleanString.charCodeAt(i);
if (charCode > 31 && charCode < 127) {
cleandString = cleandString + uncleanString[i];
}
else {
cleandString = cleandString + "0";
print("Trash found");
}
print(res.body);
print(cleandString);
}
}
);
Alles anzeigen
Das Problem ist, dass es auf der Seite gar keine Zahlungsmöglichkeiten und Preisangaben gibt. Vlt. ist den Link alt.
Hast du den Whatapp getestet und ist da eine Bettelverweis dran, oder ist das nur aus dem Link? Habe aus Prinzip kein WA, kann das also nicht testen.
Ja, aber den charCode gibt es bei dem echten Fehler nicht. Das wird nur bei Copy-Paste so interpretiert.
Glaub mir, wenn es so einfach wäre....
Nachdem es ein ungelöstes Problem mit den TRV in einigen Mesh Netzwerken gibt, biete ich mal einen Workaround an.
Der Workaround basiert auf Shelly Scripting. Voraussetzung ist also ein Gen2 Shelly im selben Netz.
Das Skript überwacht die TRV, versucht den Fehler zu vermeiden und, falls das nicht gelingt, rebootet es den TRV, bevor er soweit abgestürzt ist, das nur noch ein Werksreset hilft.
Das Skript besteht aus drei Teilen. Bitte benennt diese genau so, wie hier angegeben.
Aktiviert wird nur das Skript autostart. Anpassen müsst ihr die #####Config#### im master wie folgt:
Beispiel: Ihr habt drei TRV mit den IP-Adressen 192.168.178.10, 192.168.178.20,192.168.178.30
Dann muss die Config so aussehen:
//############# comfig ##########################################################
net : "192.168.178.",
devices : ["10","20","30"],
user : "",
pass : "",
Falls ihr für die TRV RESTRICT LOGIN aktiviert habt, tragt bitte inerhalb der "" die Daten ein.
Nun ist das ganze schon durch Starten der autostart lauffähig. Wenn ihr das Skript autostart aktiviert habt, startet das automatisch mit den Shelly.
Die Ausgabe in der Console zeigt, was das Skript macht.
Möchtet ihr auch über Euer Handy Nachrichten erhalten, müsst ihr den unteren Teil der Config anpassen. Dazu braucht ihr eine Api-Key.
Wie das geht ist hier beschrieben:
Der Service ist kostenlos und Spamfrei!
Den Api-key und eure Telefonnummer (im +491... Format) dann bitte in die Config eintragen. Dann erhaltet ihr eine Nachricht, wenn ein TRV rebootet wird.
Bei report_at könnt ihr eine Uhrzeit eintragen, dann erhaltet ihr einen täglichen Report mit dem Akkustand eurer TRV.
autostart
function get_script_id(){
Shelly.call("Script.List","",
function(result, error_code, error_message){
let a = result["scripts"];
for (let i=0; i<a.length; i++) {
if (a[i]["name"] === name){
let script_id = a[i]["id"];
Shelly.call("script.start", {"id":script_id});
Shelly.call("script.stop", {"id":Shelly.getCurrentScriptId()});
}
}
}
);
};
let name = "master";
let t = Timer.set(10000,false,get_script_id);
Alles anzeigen
master
let Config = {
//############# comfig ##########################################################
net : "192.168.178.",
devices : ["10","20","30"],
user : "admin",
pass : "geheim",
//report_at : "00:15",
report_at : "12:00",
//Messages based on https://www.callmebot.com
//phone_number : "+4917112345678",
phone_number : "",
//Signal e.g. : "" empty string, if not needed
//sig_api_key : "123456",
sig_api_key : "",
//WhatsApp e.g. : "" empty string, if not needed
//wap_api_key : "123456",
wap_api_key : ""
//###############################################################################
};
function report() {
if (Shelly.getComponentStatus("sys").time === Config.report_at) {
Shelly.call("kvs.getmany", {"key":Config["net"]},
function(result, error_code, error_message) {
let m = "";
let d = "";
let v = "";
let items = result["items"];
for (let i=0;i<Config["devices"].length; i++) {
d = Config["net"] + Config["devices"][i];
v = items[Config["net"] + Config["devices"][i]]["value"]["batt"];
m += d + "+batt:+" + JSON.stringify(v) + "%+" + "%0A%0A";
}
send_message(m);
}
);
}
};
function send_message(message) {
message = Shelly.getComponentStatus("sys").time + "%0A%0A" + message;
if (Config.sig_api_key) {
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});
}
if (Config.wap_api_key) {
let wap_url = "https://api.callmebot.com/whatsapp.php?phone=";
wap_url += Config.phone_number;
wap_url += "&text=" + message + "&apikey=" + Config.wap_api_key;
Shelly.call("http.get", {url:wap_url,timeout:30});
}
};
function log(what) {
time = Shelly.getComponentStatus("sys").time;
console.log(time + " " + what);
};
function get_worker_id(){
Shelly.call("Script.List","",
function(result, error_code, error_message){
let a = result["scripts"];
for (let i=0; i<a.length; i++) {
if (a[i]["name"].slice(0, 6) === "worker"){
worker_id = a[i]["id"];
}
}
if (worker_id === 0) {
log("script stopped: worker script not found.");
Shelly.call("script.stop", {"id":Shelly.getCurrentScriptId()});
}
}
);
};
function configure() {
let val = {"ts":Shelly.getComponentStatus("sys").unixtime,"batt":100};
counter ++;
if (counter < Config["devices"].length) {
let dev = Config["net"] + Config["devices"][counter];
log("configure device " + dev);
Shelly.call("kvs.set", {"key":dev,"value":val});
}
else {
log("configure timeout " + JSON.stringify(timeout) + " seconds");
log("configure done");
Timer.clear(t1);
counter = -1;
t1 = Timer.set(timeout * 1000,true,run);
}
};
function run () {
Shelly.call("script.stop", {"id":worker_id});
if (counter >= Config.devices.length - 1) {
counter = -1;
}
counter += 1;
item = Config["net"] + Config["devices"][counter];
let val = {"dev":item, "Config":Config};
Shelly.call("kvs.set", {"key":"current","value":val});
Shelly.call("script.start", {"id":worker_id});
Shelly.call("kvs.get", {"key":item},
function(result, error_code, error_message) {
let delta = Shelly.getComponentStatus("sys").unixtime - result["value"]["ts"];
if (delta > 1200) {
log(item + " R E B O O T");
Shelly.call("http.get", {url:pre + item + "/reboot",timeout:60});
send_message(item + "%0AR+E+B+O+O+T");
let val2 = {"ts":Shelly.getComponentStatus("sys").unixtime};
Shelly.call("kvs.set", {"key":item,"value":val2});
}
}
);
};
let worker_id = 0;
let counter = -1;
let pre = "";
let item = "";
let time = "";
let wait = 165000/Config["devices"].length;
let timeout = Math.round(wait/1000) - 1;
log("start up...");
if (Config["user"].length > 0) {
pre = "http://" + Config["user"] + ":" + Config["pass"] + "@";
}
get_worker_id();
send_message('master+started');
let t1 = Timer.set(300,true,configure);
if (Config.report_at) {
let t2 = Timer.set(60000,true,report);
}
Alles anzeigen
worker
function send_message(message) {
message = Shelly.getComponentStatus("sys").time + "%0A" + message;
if (Config.sig_api_key) {
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});
}
if (Config.wap_api_key) {
let wap_url = "https://api.callmebot.com/whatsapp.php?phone=";
wap_url += Config.phone_number;
wap_url += "&text=" + message + "&apikey=" + Config.wap_api_key;
Shelly.call("http.get", {url:wap_url,timeout:30});
}
};
function go (){
Shelly.call("http.get", {url:pre + cur + "/psovrd2"},
function(result, error_code, error_message) {
Shelly.call("http.get", {url:pre + cur + "/status"},
function(res, err_code, err_message) {
let json = JSON.parse(res.body);
let percent = json["bat"]["value"];
let rssi = json["wifi_sta"]["rssi"];
let temp = JSON.stringify(json["thermostats"]["0"]["tmp"]["value"]);
if (temp.indexOf(".") === -1) {
temp += ".0";
}
temp = temp.slice(0,4);
let unit = json["thermostats"]["0"]["target_t"]["units"];
if (percent === 100) {
percent = 99;
}
let time = Shelly.getComponentStatus("sys").time;
let tolog = time + " " + cur + " batt: " + JSON.stringify(percent) + "% ";
tolog += "rssi: " + JSON.stringify(rssi) + "dBm ";
tolog += "tmp: " + temp + " degrees " + unit;
console.log(tolog);
let val = {"ts":Shelly.getComponentStatus("sys").unixtime,"batt":percent};
Shelly.call("kvs.set", {"key":cur,"value":val});
}
);
}
);
};
let cur = "";
let pre = "";
let Config = {};
Shelly.call("kvs.get", {"key":"current"},
function(result, error_code, error_message) {
cur = result["value"]["dev"];
Config = result["value"]["Config"];
if (Config["user"].length > 0) {
pre = "http://" + Config["user"] + ":" + Config["pass"] + "@";
}
go();
}
);
Alles anzeigen
Stand: Sonntag, 23.04.2023 15:30
Ich mache mal im TRV Bereich einen Thread auf und poste die Lösung dort. dann kann man dort diskutieren.
Achtung: https://www.callmebot.com/de/support_cal…ne=351919370635 (Link per Google gefunden)
Nach der 30 Tage kostenlosen Demo, kostet es 40-99 Cent im Monat, pro Nummer, oder man wird stark gedrosselt und mit Werbung voll geknallt
Ich habe die mal angeschrieben:
On Sat, 22 Apr 2023 at 23:27, xxxxxxx <xxxxxxl@gmx.de> wrote:
ZitatHello,Alles anzeigen
I'm using the Service just to send some rare messages from my home automation system to my personal phone.
Because i like the service, I shared your service in a home automation forum with the outcoming, that i was told
your service is a rip off and after a while my phone number will be flouded with spam.
So I examined your website to find something about prices or limited free use.
I did not find anithing about prices and i thought it is free, as long as the messages are only directed to my phone.
Can you clearify that a little bit for me?
Kind regards
Michael
Antwort:
Hello Michael,
Thank you for contacting me.
The Signal API that I offer on my website is 100% free and I Will never send spam. In fact, If I send spam, my number will be automatically blocked by Signal.
Not sure why people said that. Do you have the thread at hand? I Would like to DM some users who experienced spam to know more about it.
FYI, In the last two years I only received one complaint about a user receiving strange messages and when I investigated a bit, he was including his apikey in one forum so people used it to send him funny messages. So I changed his apikey and end of story.
I hope that this helps.
Best regards,
Borja.
Also ist callmebot eine super Sache.
@dekat win könntest du deinen Post anpassen oder auf diesen Post verweisen?
Aber, wir haben hier komplett den Thread des TE gekapert. Vlt. kann mal ein Admin das aufräumen.
Wahrscheinlich cp Fehler. Aber, wie gesagt, nicht das Problem
ist hier aber OT
Das sind die Problemfälle. Diese
seltsamen Zeichen kommen so vom TRV. Wenn man zeitnah einen Reboot ausführt, ist alles wieder tutti. Wenn nicht hilft nur ein Werksreset.
Der Fehler tritt selten auf. Sagen wir mal ein mal im Monat. Ich habe aber 11 von den Dingern --> ein bis zwei mal pro Woche vor der Heizung sitzen. Das nervt.
Es haben mehrere User Tickets am Laufen. Standard Antwort ist:
Yes, we have similar raised issue with the developers.
Please, set a fixed 2.4Ghz channel on the network and have the devices connected to it.
Disable the 5Ghz network if it's not used.
Disable the band-steering feature.
Set static IP on the client and on the user side.
Disable the CoIoT feature of the device if it's not being used.
nützt aber alles nichts.
Deshalb das Script.
Ich hatte das bei mir als Python. Läuft wunderbar. Das bekommen aber nicht alle User hin. Also habe ich mir extra einen Gen2 gekauft und mich in das Scripting eingearbeitet. Jetzt kann das auch auf einem Shelly laufen und ist für jeden User leicht zu handeln.
Scriptechnisch sind diese komischen Zeichen das Problem. Man kann ja nur mit:
prüfen, ob die JSON ok ist. Sind diese komischen Zeichen drin, stürzt das Script ab. Also habe ich das in meinem Script(s) durch die Aufteilung in mehrere Scripts gelöst. Läuft wunderbar, habe seit dem nicht mehr vor der Heizung gesessen.
Das Script schickt eine Nachricht, wenn es ein TRV rebootet wird. Und täglich einen Report mit den Akkuständen der TRV.
Aber solange das mit dem CallMeBot nicht geklärt ist (anderer Thread) habe ich das noch nicht öffentlich gemacht als Workaround.
Eig, könntest du mit ner if Abfrage, anhand der String Größe/Länge, ein defektes Json noch im Hauptskript erkennen
Ne, leider nicht. Weil z.B. Temperaturen wie folgt dargestellt werden:
20,1 °C -> 20.1
20,0 °C -> 20
Außerdem entsprechen diese komischen Zeichen keiner dem mjs Interpreter bekannten Zeichencodierung.
Also kann man auch nicht:
Wenn "komisches Zeichen" in JSON, dann reboot
machen.
Man kann den Fehler auch leider nicht simulieren. Das macht es wahrscheinlich auch so schwer für die Devs das zu fixen.
Willkommen im Forum!
So geht das nicht. Wir können hier nicht hellsehen. Genaue Beschreibung. Wo liest du die Werte ab? Cloud, Webif....
Wie genau ist der Verbaut. Was soll der überhaupt messen. Wir helfen gerne, aber bitte mehr Angaben.
gn8
Die JSON sieht dann so aus:
{"wifi_sta":{"connected":true,"ssid":"1","ip":"172.16.0.67","rssi":-62},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"13:24","unixtime":1671539092,"serial":0,"has_update":false,"mac":"60A423DAF91E","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"thermostats":[{"pos":0.0,"target_t":{"enabled":true,"value":��.�,"value_op":�.�,"units":"C"},"tmp":{"value":��.�,"units":"C","is_valid":true},"schedule":true,"schedule_profile":2,"boost_minutes":0,"window_open":false}],"calibrated":true,"bat":{"value":100,"voltage":�.���},"charger":false,"update":{"status":"unknown","has_update":false,"new_version":"20220811-152343/v2.1.8@5afc928c","old_version":"20220811-152343/v2.1.8@5afc928c","beta_version":null},"ram_total":97280,"ram_free":22848,"fs_size":65536,"fs_free":59340,"uptime":149268,"fw_info":{"device":"shellytrv-60A423DAF91E","fw":"20220811-152343/v2.1.8@5afc928c"},"ps_mode":0,"dbg_flags":0}
Edit: Gelöscht Fehlpost
gn8
Die JSON sieht dann so aus:
{"wifi_sta":{"connected":true,"ssid":"1","ip":"172.16.0.67","rssi":-62},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"13:24","unixtime":1671539092,"serial":0,"has_update":false,"mac":"60A423DAF91E","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"thermostats":[{"pos":0.0,"target_t":{"enabled":true,"value":��.�,"value_op":�.�,"units":"C"},"tmp":{"value":��.�,"units":"C","is_valid":true},"schedule":true,"schedule_profile":2,"boost_minutes":0,"window_open":false}],"calibrated":true,"bat":{"value":100,"voltage":�.���},"charger":false,"update":{"status":"unknown","has_update":false,"new_version":"20220811-152343/v2.1.8@5afc928c","old_version":"20220811-152343/v2.1.8@5afc928c","beta_version":null},"ram_total":97280,"ram_free":22848,"fs_size":65536,"fs_free":59340,"uptime":149268,"fw_info":{"device":"shellytrv-60A423DAF91E","fw":"20220811-152343/v2.1.8@5afc928c"},"ps_mode":0,"dbg_flags":0}