NEWS
Test Adapter Somfy Tahoma v0.3.x GitHub
-
@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);
}
-
@pfahlenbauer
Hmm ich sehe da erstmal nichts problematisches.
Kannst du noch die kompletten Log Fehler (alle und in code tags) posten? -
Das sieht so aus:
avascript.0 2021-03-25 23:12:18.353 error (30416) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2021-03-25 23:12:18.353 error (30416) at processImmediate (timers.js:658:5) javascript.0 2021-03-25 23:12:18.353 error (30416) at tryOnImmediate (timers.js:676:5) javascript.0 2021-03-25 23:12:18.353 error (30416) at runCallback (timers.js:706:11) javascript.0 2021-03-25 23:12:18.353 error (30416) at Immediate.adapter.getForeignState [as _onImmediate] (/opt/iobroker/node_modules/iobroker.javascript/main.js:1281:17) javascript.0 2021-03-25 23:12:18.352 error (30416) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1791:17) javascript.0 2021-03-25 23:12:18.352 error (30416) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1690:37) javascript.0 2021-03-25 23:12:18.352 error (30416) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1443:28) javascript.0 2021-03-25 23:12:18.352 error (30416) at Object.createScript (vm.js:277:10) javascript.0 2021-03-25 23:12:18.352 error (30416) at new Script (vm.js:83:7) javascript.0 2021-03-25 23:12:18.352 error (30416) SyntaxError: missing ) after argument list javascript.0 2021-03-25 23:12:18.351 error (30416) ^ javascript.0 2021-03-25 23:12:18.351 error (30416) } javascript.0 2021-03-25 23:12:18.351 error at script.js.TaHoMa_Log_Perser_Skript:7 javascript.0 2021-03-25 23:12:18.351 error (30416) script.js.TaHoMa_Log_Perser_Skript compile failed:
-
@pfahlenbauer
Da war ich wohl zu doof beim kopieren, Klammer vergessen, habe es oben korrigiert und hier auch nochmal (die Funktion danach muss natürlich bleiben) :on({id:'logparser.0.filters.tahoma.jsonCount', change:'ne'}, function (dp) { if (dp.state.val >= 10){ setState('logparser.0.filters.tahoma.emptyJson', true); restartTahomaAdapter(); } });
-
Super, danke - läuft!
-
Hi, ab und an habe ich auch genau diese Probleme.
Zitat: "Stehe derzeit vor dem gleichen Problem. Die Steuerung per App funktioniert 1a, nur das Modul hier wirft ständig Fehler bzgl. des Logins." - leider muss ich mich dem anschließen.
tahomalink.com lässt mein Login dann auch nicht mehr zu, falsches PW, also eher: Ausgesperrt.
Ein Anruf letztens bei der Somfy-Hotline ergab: Zuviele Abrufe, setzen Sie mal den Polling-Wert höher. Dabei steht der bei mir schon auf "2400000".
Bedienung der Geräte über die Tahoma-App funktioniert natürlich, denn ich vermute mal, diese App spricht mit der Tahoma-Zentrale und geht nicht übers Internet.
Aber der Adapter kann sich nun dann nicht mehr verbinden.
Jetzt muss ich mich wohl wieder um eine telefonische Entsperrung kümmern (heute geht keiner ans Telefon wegen einer internen Veranstaltung dort).
Was ist denn nun der Königsweg hier: Nachts den Adapter abschalten? Per Script überwachen und bei Fehlern im Bereich 400 neu starten? Das sind doch eigentlich alles nur Workarounds.Übrigens: Im AppleHome(Kit) sind die Tahoma-Jalousien alle enthalten und dort funktionieren sie auch. Nachdem Somfy sich wohl Apple gegenüber geöffnet hat, hat man die Geräte in AppleHome auch zur Verfügung und da besteht das Login-Problem nicht. Vermutlich, weil AppleHome direkt auf die Tahoma-Zentrale hier zugreift?!? Wenn ich jetzt den AppleHome-Tahoma-Button aus IOBroker betätigen könnte, dann hätte ich auch keine Probleme mehr.
Aber...
Was hilft wirklich gegen dies:tahoma.0 2021-03-26 08:35:59.081 info (29905) Login failed three times, waiting 2 minutes before retrying.
tahoma.0 2021-03-26 08:35:59.080 warn (29905) error during tahomalink request: undefined ->401 retry login
(=ausgesperrt)LG
M -
Ich habe noch Anlaufschwierigkeiten mit dem setObject(). Wo muss ich denn die Rechte(?) dafür vergeben?
javascript.0 2021-03-26 14:17:52.194 info (2198) script.js.Tahoma.Restart_Tahoma: Tahoma Instanz wieder eingeschaltet. javascript.0 2021-03-26 14:17:52.194 error (2198) Function "setObject" is not allowed. Use adapter settings to allow it. javascript.0 2021-03-26 14:17:42.191 info (2198) script.js.Tahoma.Restart_Tahoma: Tahoma Instanz ausgeschaltet. javascript.0 2021-03-26 14:17:42.191 error (2198) Function "setObject" is not allowed. Use adapter settings to allow it.
-
@saschas
Das musst du in den Einstellungen der Javascript Instanz aktivieren, ich meine es ist direkt auf der ersten Seite unten. -
@blackeagle998 Du warst du schnell - oder ich zu langsam. Wollte beim Post schon löschen...
Hab im Tahoma und Logparser Adapter gesucht. Muss aber natürlich beim Javascript-Adapter schauen.
Gefunden.