NEWS
SOLVED [Gelöst]ObjectId (von Wiffi-WZ-Adapter) triggert Script nicht
-
@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?
-
@coyote sagte:
die Typen eigentlich auch richtig sind.
Nein, das sind sie nicht. Die Werte werden alle in Anführungszeichen übergeben, z.B. "regen_mm_heute": "value":"519.0". Richtig wäre "value":519.0
-
@smartboart sagte:
Welche andere Möglichkeit / Workaround gibt es dazu?
Da ich nur einen kleinen Teil des Skripts kenne, am Beispiel Sonne:
var sonne = toBoolean(getState('wiffi-wz.0.root.192_168_66_134.w_sonne_scheint'/*16*/).val);
Bei Zahlen entsprechend
var Sturm = parseFloat(getState('wiffi-wz.0.root.192_168_66_134.w_windstaerke).val);
-
@paul53 ah gut....wierder was dazu gelernt....Danke..
-
@paul53 ok, danke Paul. Wieder was gelernt, ich dachte dass passt so. Dann sollten wir vllt doch mal bei Eugen nachhaken, ob er das ändern möchte. Dann wäre das JSON ja so nicht korrekt
-
@coyote ja sieht so aus als hätte er in der firmware den Bock drinne...Schreibst du ihn an.. Er antwortet immer relativ schnell
-
Ja kann ich machen, meinst du direkt über seine Page oder Homematic Forum?
-
@paul53 said in [Gelöst]ObjectId (von Wiffi-WZ-Adapter) triggert Script nicht:
Da ich nur einen kleinen Teil des Skripts kenne, am Beispiel Sonne:
var sonne = toBoolean(getState('wiffi-wz.0.root.192_168_66_134.w_sonne_scheint'/16/).val);Bei Zahlen entsprechend
var Sturm = parseFloat(getState('wiffi-wz.0.root.192_168_66_134.w_windstaerke).val);Wie löse ich das hier?
on({id:"wiffi-wz.0.root.192_168_1_52.w_windstaerke", val: 6, change: 'ne' },function(obj){bzw.
on({id:Sturm, val: 6, change: 'ne' },function(obj){ok könnte man so machen
on(idSturm, function(dp) {
var Sturm = parseFloat(getState(idSturm).val);
if(Sturm>=6){
if (logging) log ('Trigger Sturm Rollo Couch aktiv');
Rolladen();
}
});Dann wird aber immer immer beim pollen getriggert und nicht nur einmal bei Änderung auf 6..
-
on({id:"wiffi-wz.0.root.192_168_1_52.w_windstaerke", val: 6, change: 'ne' },function(obj){
on("wiffi-wz.0.root.192_168_1_52.w_windstaerke",function(obj) { if(parseFloat(obj.state.val) == 6) { }
Du triggerst auf Windstärke == 6 ?
-
@smartboart sagte:
nicht nur einmal bei Änderung auf 6..
Du möchtest die Aktion nur ausführen, wenn der Grenzwert erstmalig überschritten wird und dann darüber bleibt ? Dann so
on("wiffi-wz.0.root.192_168_1_52.w_windstaerke",function(obj) { if(parseFloat(obj.state.val) >= 6 && parseFloat(obj.oldState.val) < 6) { }
-
@paul53 Danke sehr...
Habe jetz alle Skripte durch...Im Scriptadapter in der Sufu wiffi-wz.0.root.192_168_1_52 eingegeben und alles durchgeackert...Das war kein Spaß...
Danke für die tolle Hilfe..
-
Genau, vielen Dank @paul53 für deine Hilfe.
Eugen hab ich angeschrieben und der Entwickler des wiffi-wz Adapters weiß auch Bescheid über GitHub.
Dann hoffen wir mal das Eugen das JSON schnell fixt. -
@smartboart
Ich habe mit Eugen geschrieben hier die Mail von gestern:Ich habe mir die für mich gefühlte "unendliche" Geschichte/diskussion
des richtigen JSON-Formats in den vielen Mails nochmal angesehen.
Letzlich entstand aus den Diskussionen mit verschiedenen Usern der heute
gewählte Ansatz, auch die "values" als Zahlen im Stringformat
darzustellen. Wenn ich jetzt wieder auf die von Dir bevorzugte Lösung
zurückschwenke, dann bekomme ich von vielen Seiten richtig Ärger, die
auf Basis des aktuellen JSON-Formates ihre Auswertung
ausgerichtet/programmiert haben.
Also von meiner Seite die klare Entscheidung für das JSON-Format beim
WEATHERMAN :
Ich bleibe bei dem aktuellen Format mit den Values als String. Die
anderen Produkte wie PULSECOUNTER werde ich sukzessive auf dieses Format
umstellen.
Daraus ergibt sich ggf. die Notwendigkeit, die entsprechenden
IObroker-Adapter so anzupassen, daß aus den verschiedenen value-Strings
die verschiedenen Zahlenformate erzeugt werden (was aber sicher kein
großes technisches Problem sein wird).
Ich bitte um Verständnis für diese für Dich möglicherweise nicht
zufriedenstellende Antwort.
Bleibt dann nur noch die Möglichkeit es direkt im Adapter abzuändern oder eben umzuwandeln wie paul53 es geschrieben hat.
-
@coyote Vielen Dank für die Rückmeldung...
Ich hoffe x4tlaoguo passt den Adapter entsprechend an..
-
@smartboart hab das jetzt mal im Github Issue weitergegeben und x4tlaoguo will den Adapter dann Anfang nächste Woche umbauen.