NEWS
Test Adapter Somfy Tahoma v0.3.x GitHub
-
Hallo zusammen,
hat eventuell noch jemand das Problem, dass Befehle regelmäßig nicht erfolgreich ausgeführt werden?Im Log tauchen dann immer 400er-Fehler (TOO_MANY_OPERATIONS_IN_PROGRESS) auf und die nachfolgenden Befehle zum Steuern der Rollläden haben keinen Effekt (die Änderung des Status steht im Log, aber der Rollladen fährt nicht). Die Fehler tauchen allerdings auch regelmäßig auf, wenn gar kein Script zur Rollladensteuerung läuft.
Hier mal ein beispielhafter Auszug aus dem Log:
2021-03-14 19:26:00.389 - warn: tahoma.0 (23649) error during tahomalink request: null, request path: /setup/devices/states/refresh with payload:{} 2021-03-14 19:26:00.391 - warn: tahoma.0 (23649) Response: {"statusCode":400,"body":{"errorCode":"TOO_MANY_OPERATIONS_IN_PROGRESS","error":"Too many asynchronous jobs, try again later (job was Full refresh all states)"},"headers":{"date":"Sun, 14 Mar 2021 18:25:59 GMT","server":"overkiz","strict-transport-security":"max-age=31536000; includeSubDomains","content-type":"application/json;charset=UTF-8","connection":"close","transfer-encoding":"chunked"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"www.tahomalink.com","port":443,"hostname":"www.tahomalink.com","hash":null,"search":null,"query":null,"pathname":"/enduser-mobile-web/enduserAPI//setup/devices/states/refresh","path":"/enduser-mobile-web/enduserAPI//setup/devices/states/refresh","href":"https://www.tahomalink.com/enduser-mobile-web/enduserAPI//setup/devices/states/refresh"},"method":"POST","headers":{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36","cookie":"JSESSIONID=1632732872DD1D6F361FC3C87925F4AB","accept":"application/json","content-type":"application/json","content-length":2}}} 2021-03-14 19:26:00.392 - warn: tahoma.0 (23649) Body: {"errorCode":"TOO_MANY_OPERATIONS_IN_PROGRESS","error":"Too many asynchronous jobs, try again later (job was Full refresh all states)"} 2021-03-14 19:26:00.392 - warn: tahoma.0 (23649) refresh device state failed
Eine Änderung des Abrufintervalls in den Einstellungen hat keine Besserung gebracht. Insgesamt habe ich 15 Rollläden im Einsatz, die über eine Connexoon-Box gesteuert werden. Die Zeitsteuerung über die Somfy Connexoon-App auf dem Handy funktioniert hingegen problemlos.
-
@thege und alle anderen,
bei mir tritt zur Zeit ein ähnlicher Fehler auf:tahoma.0 (24844) error during tahomalink request: Error: connect ETIMEDOUT 178.32.15.131:443, request path: events/5708fcd3-ac10-3e01-0169-e762ab72ec50/fetch with payload:{} tahoma.0 (24844) refresh device state failed tahoma.0 (24844) eventRegisterID = 5744d73e-ac10-3e01-0169-e762f53f3554 tahoma.0 (24844) refresh device state failed tahoma.0 (24844) error during tahomalink request: undefined ->401 retry login tahoma.0 (24844) Login failed three times, waiting 2 minutes before retrying.
Das End vom Lied ist aber das gleiche. Die Befehle werden nicht ausgeführt. Ich in diesen Fällen gelingt mir aber auch nicht mehr der Login auf die Webseite https://www.tahomalink.com/enduser-mobile-web/steer-html5-client/tahoma/?
Einzige Abhilfe ist der von @StrathCole beschrieben Workaround den Adapter mal über Nacht zu deaktiveren. Dann funktioniert es meist am nächsten Tag wieder. Aber das sollte natürlich keine Lösung sein.
@StrathCole Hattest du schon die Zeit den Adapter weiterzuentwicklen bzw. gibt es eine neuere Version als 0.3.3 -
@master-rudi Wie deaktivierst und aktivierst du den Adapter zeitgesteuert? Mit Hilfe eines eigenen Javascripts?
-
Hat schon jemand mal den Ansatz probiert, dass immer wenn im Log die Fehlermeldung kommt "error during tahomalink request: undefined ->401 retry login" sich der Adapter für ein definiertes Zeitintervall deaktiviert?
Die Idee kam mir gestern Abend noch. -
Here we go...inkl. Telegram-Benachrichtigungen.
//Skript startet Tahoma-Adapter bei Warnungen im Log neu var warten = 5; //Wartezeit bis zum Restart var warten_ms = warten*60000; //Wartezeit bis zum Restart in ms var warten_buf =warten_ms+60000; var sleep = false; onLog('warn', data => { var check = data.message.includes("tahoma"); if (check==true && sleep==false) { sleep=true; var text = "Tahoma Fehler identifiziert. Adapter wird gestoppt und in "+ warten + " Minuten wieder aktiviert"; telegram (text); setState("system.adapter.tahoma.0.alive", false); setTimeout(function() { setState("system.adapter.tahoma.0.alive", true); var text = "Tahoma Adapter wieder gestartet"; telegram (text); }, warten_ms); setTimeout(function() { sleep=false; var text = "Adapterüberwachung wieder aktiv"; telegram (text); }, warten_buf); } });
-
@gammler2003 Wow! Hast du das jetzt extra auf mein Verlangen geschrieben, oder hast du das selbst bei dir auch im Einsatz?
Du frägst ja jetzt generell nach einer "warn" Meldung von tahoma ab. Gibt es da keine Probleme, dass zu früh / zu oft der Adapter aus/an geschaltet wird?
-
@saschas Teilweise habe ich es bereits im Einsatz - wobei es noch nicht perfekt läuft. Wenn die Tahoma sich "verschluckt", dann richtig. Vermutlich hilft es, die triggernde Warnmeldung einzuschränken und/oder das Pausenintervall zu verlängern.
Aber vom Grundsatz her ist das die Lösung...
-
@gammler2003 sagte in Test Adapter Somfy Tahoma v0.3.x GitHub:
Aber vom Grundsatz her ist das die Lösung...
Leider nein, dass ist nur ein Workaround.
-
@saschas said in Test Adapter Somfy Tahoma v0.3.x GitHub:
@master-rudi Wie deaktivierst und aktivierst du den Adapter zeitgesteuert? Mit Hilfe eines eigenen Javascripts?
Nein ich mache es mit einem simplen quick & dirty blockly:
Ist aber keine allzu perfekte Lösung.
-
@gammler2003 said in Test Adapter Somfy Tahoma v0.3.x GitHub:
//Skript startet Tahoma-Adapter bei Warnungen im Log neu
Das werde ich mal testen und evtl noch etwas ausbauen. Danke für den Ansatz, war immer etwas zu faul Hoffe auf einen funktionierenden fix. Aber der Adapter scheint tot zu sein... Nur eine Frage der Zeit bis ein TaHoma Update die Funktionalität komplett killt...
-
@master-rudi
Hi,
als Ansatz für eine Erweiterung:
Ich habe den logparser Adapter und werte das Log hinsichtlich Tahoma Fehlermeldungen aus. Wenn die mehrfach hintereinander kommen, starte ich den Adapter neu.
Hat bisher zumindest funktioniert. -
Hallo, ich habe heute den jscontroller aktualisiert und seit dem kommt bei jedem Status-Refresh folgende WARN-Meldungen:
State "tahoma.0.devices.Studio_1.states.io:PriorityLockLevelState" has no existing object, this might lead to an error in future versions State "tahoma.0.devices.Studio_1.states.io:PriorityLockOriginatorState" has no existing object, this might lead to an error in future versions
Hat jemand eine Idee wie ich die Meldungen wegbekomme?
-
@derdominik Leider nein, bekomme aber identische Warnmeldungen.
-
Gerade gesehen dass es dafür schon ein Ticket gibt: https://github.com/StrathCole/ioBroker.tahoma/issues/19
-
@blackeagle998 Ich nehme mal an, du lässt den Adpater neustarten und machst das nicht manuell.
Magst du dein Skript bitte mit uns teilen? -
@saschas
Der aus meiner Sicht einfachste Weg:-
LOG Parser Adapter installieren und im Reiter Parser-Regeln einen Eintrag "Tahoma" hinzufügen, siehe Screenshot letzte Zeile (WARN anhaken, bei Bedarf auch ERROR, Haken bei Merge raus, sonst werden gleiche Fehler zusammengefasst und der counter erhöht sich nicht):
-
In der Objektansicht erhält man dann folgende Struktur:
-
Auf Änderungen des Datenpunktes 'logparser.0.filters.tahoma.jsonCount' subscriben. Wenn Anzahl größer x (hier 10), dann clear das JSON und führe die Funktion "restartTahomaAdapter" aus:
on({id:'logparser.0.filters.tahoma.jsonCount', change:'ne'}, function (dp) { if (dp.state.val >= 10){ setState('logparser.0.filters.tahoma.emptyJson', true); restartTahomaAdapter(); } }); function restartTahomaAdapter(){ let adapter_id = 'system.adapter.tahoma.0'; var obj = getObject(adapter_id); if (obj.common.enabled){ obj.common.enabled = false; // Adapter ausschalten setObject(adapter_id, obj); log('Tahoma Instanz ausgeschaltet.', 'info'); } setTimeout(function(){ obj.common.enabled = true; // Adapter einschalten setObject(adapter_id, obj); log('Tahoma Instanz wieder eingeschaltet.', 'info'); },10000); }
Das lässt sich beliebig ausbauen, bspw. kann man pro Fehler genau eine LOG-Parser Regel anlegen und somit pro Fehler ein JSON erhalten.
Mehr kann ich nicht liefern, meine Inhalte sind speziell auf meine Steuerung zugeschnitten, das würde hier nicht passen. -
-
@blackeagle998 1000 Dank fürs sharen! Ich werde das heute Nachmittag direkt mal nachstellen und noch die Telegram-Nachricht-Funktion einbauen.
-
@blackeagle998 said in Test Adapter Somfy Tahoma v0.3.x GitHub:
Ich hab das mal mit Deinem Skript versucht - aber leider klappt das bei mir nicht (muss auchzugeben, dass ich von Skripten wenig Ahnung habe).
ich bekomme solche Fehlermeldungen:
An was kann das liegen, was muss ich ändern?
Danke!
-
@pfahlenbauer
Zeig doch mal was du gebaut hast, sonst ist es leider ein Ratespiel. -
Ich habe nur Copy/Paste gemacht und die Einstellungen im Log Perser so gemacht wie in Deiner Anleitung:
on({id:'logparser.0.filters.tahoma.jsonCount', change:'ne'}, function (dp) {
if (dp.state.val >= 10){
setState('logparser.0.filters.tahoma.emptyJson', true);
restartTahomaAdapter();
}
}function restartTahomaAdapter(){
let adapter_id = 'system.adapter.tahoma.0';
var obj = getObject(adapter_id);if (obj.common.enabled){ obj.common.enabled = false; // Adapter ausschalten setObject(adapter_id, obj); log('Tahoma Instanz ausgeschaltet.', 'info'); } setTimeout(function(){ obj.common.enabled = true; // Adapter einschalten setObject(adapter_id, obj); log('Tahoma Instanz wieder eingeschaltet.', 'info'); },10000);
}