NEWS
Fehler im Script
-
Hallo ich habe ein Script zusammen geklaut, es soll das Ereignis eines Präsenzsensors protokollieren und in eine List schreiben. Macht er auch, nur die Einträge sind dreifach. Ich finde den Fehler nicht.
/*****Alarmmeldung Chalet ************************************* ** OKT 2023 ** TUYA ** ** erstellt: 16.10.23, ** geändert: *****************************************************************/ const idalarm = "tuya.0.bf19ec26673b2eba74b2ae.1" const id_Ereignis = "0_userdata.0.Haus.Alarm.Ereignis" const id_Ereignisliste = "0_userdata.0.Haus.Alarm.Ereignisliste" const id_Zähler = "0_userdata.0.Haus.Alarm.Zähler" const idFenster ="0_userdata.0.Haus.Fenster.textFensterauf" const idOffen="0_userdata.0.Haus.Fenster.anzahlFensterauf" var text, logging = true //Tigger bei Presence on(idalarm, function (obj) { // triggert bei Wertänderung log(obj.state.val) if (obj.state.val == 1) { setState(id_Zähler, getState(id_Zähler).val + 1); var ereignis_text = zeit_umwandeln(obj.newState.ts); setState(id_Ereignis, ereignis_text.toString()); log('Alarm Auslöser: ' + zeit_umwandeln(obj.newState.ts)); text = '\ud83d\udea8 Bewegung im Chalet ' createEventlog("NL", text) if (logging) sendTo('whatsapp-cmb.0', 'send', { text, phone: '+49152xxxxx49' }); //Ereignisliste erstellen___________________________________________________________________________________________________ function ereignis(text) { text = text.toString(); var ereignisStr = getState(id_Ereignisliste).val; var ereignisArr; if (ereignisStr) { if (ereignisStr == "<ul><li></li></ul>") { ereignisArr = []; } else { ereignisArr = ereignisStr.replace(/<ul><li>/, "").replace(/<\/li><\/ul>/, "").split("</li><li>"); } } else { ereignisArr = []; } ereignisArr = ereignisArr.reverse(); ereignisArr.push(text); ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken var str = ereignisArr.join("</li><li>"); setState(id_Ereignisliste, "<ul><li>" + str + "</li></ul>"); } on(id_Ereignis, function (data) { log('Ereignis ' + data.newState.val + ' übergeben'); ereignis(data.newState.val); }); function zeit_umwandeln(unix_zeit) { var nz = new Date(unix_zeit); var date=formatDate(new Date(unix_zeit), "TT.MM.JJJJ") var stunden = nz.getHours() < 10 ? '0' + nz.getHours() : nz.getHours(); var minuten = nz.getMinutes() < 10 ? '0' + nz.getMinutes() : nz.getMinutes(); var sekunden = nz.getSeconds() < 10 ? '0' + nz.getSeconds() : nz.getSeconds(); var Fenster = getState(idFenster).val neue_zeit = stunden + ':' + minuten + ':' + sekunden + ' Uhr, ' +formatDate(new Date(unix_zeit), "TT.MM.JJJJ")+" "+Fenster; return (neue_zeit); } } });
Michael -
/*****Alarmmeldung Chalet ************************************* ** OKT 2023 ** TUYA ** ** erstellt: 16.10.23, ** geändert: *****************************************************************/ const idalarm="tuya.0.bf19ec26673b2eba74b2ae.1" const id_Ereignis="0_userdata.0.Haus.Alarm.Ereignis" const id_Ereignisliste="0_userdata.0.Haus.Alarm.Ereignisliste" const id_Zähler="0_userdata.0.Haus.Alarm.Zähler" const idFenster="0_userdata.0.Haus.Fenster.textFensterauf" const idOffen="0_userdata.0.Haus.Fenster.anzahlFensterauf" var text,logging=true //Tigger bei Presence on(idalarm,function (obj) { // triggert bei Wertänderung log(obj.state.val) if (obj.state.val==1) { setState(id_Zähler,getState(id_Zähler).val+1); var ereignis_text=zeit_umwandeln(obj.newState.ts); setState(id_Ereignis,ereignis_text.toString()); log('Alarm Auslöser: '+zeit_umwandeln(obj.newState.ts)); text='\ud83d\udea8 Bewegung im Chalet ' createEventlog("NL",text) if (logging) sendTo('whatsapp-cmb.0','send',{ text,phone: '+4915253938149' }); //Ereignisliste erstellen___________________________________________________________________________________________________ function ereignis(text) { text=text.toString(); var ereignisStr=getState(id_Ereignisliste).val; var ereignisArr; if (ereignisStr) { if (ereignisStr=="<ul><li></li></ul>") { ereignisArr=[]; } else { ereignisArr=ereignisStr.replace(/<ul><li>/,"").replace(/<\/li><\/ul>/,"").split("</li><li>"); } } else { ereignisArr=[]; } ereignisArr=ereignisArr.reverse(); ereignisArr.push(text); ereignisArr.reverse().splice(20); // Liste auf 20 Einträge beschränken var str=ereignisArr.join("</li><li>"); setState(id_Ereignisliste,"<ul><li>"+str+"</li></ul>"); } } }); on(id_Ereignis,function (data) { log('Ereignis '+data.newState.val+' übergeben'); ereignis(data.newState.val); }); function zeit_umwandeln(unix_zeit) { var nz=new Date(unix_zeit); var date=formatDate(new Date(unix_zeit),"TT.MM.JJJJ") var stunden=nz.getHours()<10? '0'+nz.getHours():nz.getHours(); var minuten=nz.getMinutes()<10? '0'+nz.getMinutes():nz.getMinutes(); var sekunden=nz.getSeconds()<10? '0'+nz.getSeconds():nz.getSeconds(); var Fenster=getState(idFenster).val neue_zeit=stunden+':'+minuten+':'+sekunden+' Uhr, '+formatDate(new Date(unix_zeit),"TT.MM.JJJJ")+" "+Fenster; return (neue_zeit); }
Wobei ich nicht weiß was newState.val ist, ist das ein Alias für state.val?
-
@ticaki sagte: newState.val ist, ist das ein Alias für state.val?
Ja, newState ist die ältere Version.