NEWS
SOLVED [Gelöst]ObjectId (von Wiffi-WZ-Adapter) triggert Script nicht
-
@coyote sagte:
Test kommt im Log an, log für sonne nicht
Das glaube ich nicht. Erweitere bitte das log(sonne):
log(sonne + typeof sonne);
-
@paul53
ich glaube es ja auch nicht, ist aber so.
Jetzt kommt im log: falsestring
-
@coyote sagte:
Jetzt kommt im log: falsestring
Da haben wir es: Die Abfrage muss lauten
if (sonne == 'false') {
-
@paul53 ja nach deiner Erweiterung des Logs, war mir das auch fast klar, nur stimmt doch dann im Adapter was nicht oder?
Soll ja eigentlich kein String sein, sonder ein bool Wert -
@coyote sagte:
Soll ja eigentlich kein String sein, sonder ein bool Wert
Welchen Typ hat der Datenpunkt ?
-
@paul53 Typ ist "state" und laut Raw Daten ein "boolean" Wert. Das wundert mich ja so.
-
-
@paul53 denke auch, hier nochmal die Raw Daten:
{ "user": "system.user.admin", "from": "system.adapter.wiffi-wz.0", "ts": 1559584147719, "common": { "name": 16, "desc": "sonne_scheint", "unit": "", "role": "indicator", "id": "w_sonne_scheint", "type": "boolean", "read": true, "write": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "wiffi-wz.0.root.192_168_66_134.w_sonne_scheint", "type": "state" }
-
@coyote
habe das selbe Problem seit dem Update des Weatherman auf die neuste Firmware...
hab die ganze Nacht nach dem Problem gesucht...
hier ein Screenshot mit dem Unterschied der Raw Daten zu alt und Neu...bei neuer FW kam eine Reihe hinzu...Denke der Adapter muss hier an die neue FW des Weatherman angepasst werden...
Beispiel geht nicht:
var Regen beachtenif (Regen ===true || Sturm > 3 || (working === false && Pos > 1 && Rolladen === 0 && Sonne === false && Automatik)) { setState(idMarkise, 0);
Beispiel geht:
var Regen beachtenif (Regen || Sturm > 3 || (working === false && Pos > 1 && Rolladen === 0 && Sonne === false && Automatik)) { setState(idMarkise, 0);
if (Regen === 'true' || Sturm > 3 || (working === false && Pos > 1 && Rolladen === 0 && Sonne === false && Automatik)) { setState(idMarkise, 0);
-
@coyote sind alle States des wheatherman davon betroffen?
-
@smartboart Das lässt sich mit einem Testskript leicht überprüfen.
function checkType(id) { log('ID: ' + id + ' Solltyp: ' + getObject(id).common.type + ' Isttyp: ' + typeof getState(id).val); } // richtige Datenpunkt-IDs einsetzen ! checkType('1. ID'); checkType('2. ID'); // usw.
-
@paul53 said in [Gelöst]ObjectId (von Wiffi-WZ-Adapter) triggert Script nicht:
function checkType(id) {
Danke werde es mal testen. Bis jetzt weiss ich aber das auch Zahlenwerte betroffen sind...Windstärke , Feuchtigkeit,Temperatur usw...
Im Prinzip muss ich alle meine Skript anpassen in welchen ich die States des Weatherman verwende...Hätte das FW Update lassen sollen. Der Grund war eben die bessere Regenerkennung...Hab den Entwickler mal angeschrieben ob er was machen möchte...Hatte seiner Zeit den Waetherman für ihn getestet bzw. die Integration des Weatherman in den Adapter...
Update:Hier der Log der Datenpunkte welche ich verwende..
8:53:07.319 info javascript.0 Start javascript script.js.common.Test.Test 18:53:07.320 info javascript.0 script.js.common.Test.Test: ID: wiffi-wz.0.root.192_168_1_52.w_regenmelder Solltyp: boolean Isttyp: string 18:53:07.320 info javascript.0 script.js.common.Test.Test: ID: wiffi-wz.0.root.192_168_1_52.w_windstaerke Solltyp: number Isttyp: string 18:53:07.320 info javascript.0 script.js.common.Test.Test: ID: wiffi-wz.0.root.192_168_1_52.w_lux Solltyp: number Isttyp: string 18:53:07.320 info javascript.0 script.js.common.Test.Test: ID: wiffi-wz.0.root.192_168_1_52.w_sonne_scheint Solltyp: boolean Isttyp: string 18:53:07.320 info javascript.0 script.js.common.Test.Test: ID: wiffi-wz.0.root.192_168_1_52.w_temperatur Solltyp: number Isttyp: string 18:53:07.320 info javascript.0 script.js.common.Test.Test: ID: wiffi-wz.0.root.192_168_1_52.w_feuchte_rel Solltyp: number Isttyp: string 18:53:07.320 info javascript.0 script.js.common.Test.Test: registered 0 subscriptions and 0 schedules
-
@smartboart sagte:
Hier der Log der Datenpunkte
Offenbar werden alle Werte als String geliefert. Bei Zahlen hilft parseFloat(), bei boolean Werten kann man die undokumentierte Funktion toBoolean() des JS-Adapters nutzen.
-
@smartboart aha ok, gut dass du mal alle Datenpunkte angeschaut hast. Es kommt ja dann wohl alles als String zurück. Welche Version hast du auf dem weatherman? 107? Der Adapterentwickler ist aber wohl auch dran, zumindest gibt es ein Issue auf GitHub, da hab ich auch schon was dazu geschrieben. Ich sollte eine neue Version testen, jedoch war es da unverändert, die Werte waren immer noch String
-
@coyote ja die 107...hatte mich lange gegen ein update gewehrt, weil ab einem bestimmten Update auch state Namen geändert wurden. Deshalb kann ich nicht sagen obe auch vorherige Versionen davon betroffen sind... Der Wiffi WZ macht immernoch alles wie er soll mit der neusten Firmware..
-
@paul53 ja im moment helfe ich mir indem ich überall ein hochkomma setze..
'true' / 'Zahl' / 'false'Das scheint zu funktionieren...
-
@smartboart OK hab auch die 107 drauf. Ja das stimmt, da ist bisschen was geändert worden, der Adapter Entwickler von wiffi-wz weiß das aber auch und die Namen müssten dort auch schon angepasst sein, nur die Werte passen eben noch nicht bzw der Typ
-
@smartboart sagte:
indem ich überall ein hochkomma setze..
Und wenn die nächste Version Zahlen und boolsche Werte liefert, machst Du alles wieder rückgängig ? Die Umwandlung stört auch nicht, wenn es keine Strings sind.
Der Vergleich
Sturm > '3'
wird nicht funktionieren, da z.B. '10' kleiner ist als '3'.
-
Ja so habe ich es momentan auch gelöst.
Was mich etwas wundert ist, dass laut JSON das in iobroker ankommt, die Typen eigentlich auch richtig sind.
Schaut:Full message: {"modultyp":"weatherman","vars":[{"name":"0","homematic_name":"w_ip","desc":"weatherman_ip","type":"string","unit":"","value":"192.168.66.134"},{"name":"1","homematic_name":"w_temperatur","desc":"aussentemperatur","type":"number","unit":"gradC","value":"25.8"},{"name":"21","homematic_name":"w_windchill","desc":"gefuehlte_temperatur","type":"number","unit":"gradC","value":"25.8"},{"name":"9","homematic_name":"w_taupunkt","desc":"taupunkt_temperatur","type":"number","unit":"gradC","value":"10.4"},{"name":"14","homematic_name":"w_himmeltemperatur","desc":"himmel_temperatur","type":"number","unit":"gradC","value":"0.0"},{"name":"2","homematic_name":"w_feuchte_rel","desc":"rel_feuchte","type":"number","unit":"%","value":"38.0"},{"name":"17","homematic_name":"w_feuchte_abs","desc":"abs_feuchte","type":"number","unit":"g/m3","value":"9.1"},{"name":"18","homematic_name":"w_regensensor_wert","desc":"regenmelderwert","type":"number","unit":"","value":"5"},{"name":"7","homematic_name":"w_regenmelder","desc":"regenstatus","type":"boolean","unit":"","value":"false"},{"name":"8","homematic_name":"w_regenstaerke","desc":"regenstaerke","type":"number","unit":"mm/h","value":"0.0"},{"name":"19","homematic_name":"w_regen_letzte_h","desc":"regen_pro_h","type":"number","unit":"mm","value":"0.0"},{"name":"20","homematic_name":"w_regen_mm_heute","desc":"regen_mm_heute","type":"number","unit":"mm","value":"519.0"},{"name":"32","homematic_name":"w_regenstunden_heute","desc":"regenstunden_heute","type":"number","unit":"h","value":"0.0"},{"name":"27","homematic_name":"","desc":"regen_mm_gestern","type":"number","unit":"mm","value":"1245.5"},{"name":"3","homematic_name":"w_barometer","desc":"nn_luftdruck","type":"number","unit":"mb","value":"1300.00"},{"name":"11","homematic_name":"w_barotrend","desc":"luftdrucktrend","type":"string","unit":"","value":"bitte_warten"},{"name":"4","homematic_name":"w_wind_mittel","desc":"avg_windgeschwindigkeit","type":"number","unit":"m/s","value":"0.6"},{"name":"5","homematic_name":"w_wind_spitze","desc":"peak_windgeschwindigkeit","type":"number","unit":"m/s","value":"0.8"},{"name":"24","homematic_name":"w_windstaerke","desc":"bft_windgeschwindigkeit","type":"number","unit":"bft","value":"1"},{"name":"23","homematic_name":"w_windrichtung","desc":"windrichtung","type":"string","unit":"","value":"W"},{"name":"6","homematic_name":"w_wind_dir","desc":"windwinkel","type":"number","unit":"grad","value":"270"},{"name":"10","homematic_name":"w_lux","desc":"helligkeit","type":"number","unit":"lux","value":"11374.0"},{"name":"22","homematic_name":"w_sonne_diff_temp","desc":"sonnen_difftemperatur","type":"number","unit":"gradC","value":"13.6"},{"name":"15","homematic_name":"","desc":"sonnen_temperatur","type":"number","unit":"gradC","value":"39.4"},{"name":"16","homematic_name":"w_sonne_scheint","desc":"sonne_scheint","type":"boolean","unit":"","value":"true"},{"name":"26","homematic_name":"w_sonnenstunden_heute","desc":"Sonnenstunden_heute","type":"number","unit":"h","value":"0.8"},{"name":"12","homematic_name":"w_elevation","desc":"sonne_elevation","type":"number","unit":"grad","value":"47.2"},{"name":"13","homematic_name":"w_azimut","desc":"sonne_azimut","type":"number","unit":"grad","value":"112.8"},{"name":"30","homematic_name":"w_minuten_vor_sa","desc":"minuten_vor_sa","type":"number","unit":"min","value":"-307"},{"name":"31","homematic_name":"w_minuten_vor_su","desc":"minuten_vor_su","type":"number","unit":"min","value":"650"}]
-
@paul53 said in [Gelöst]ObjectId (von Wiffi-WZ-Adapter) triggert Script nicht:
Der Vergleich
Sturm > '3'wird nicht funktionieren, da z.B. '10' kleiner ist als '3'.
ok, dann habe ich deine Erklärung nicht ganz verstanden...Welche andere Möglichkeit / Workaround gibt es dazu?