NEWS
Müllkalender
-
hallo zusammen,
habe mir einen "müllkalender" mit blockly zusammengestellt. ziel ist es auf meinem tablet im wohnzimmer einentag vor dem ereignis
ein symbol anzuzeigen in form eines mülleimer´s in entsprechender farbe.
hierzu möchte ich mir vom google i-calender die ereignisse herholen. dort ist auch eine beachrichtigung drin 24 stunden vorher. unter
"ical.0/data/html" bekomme ich folgenden eintrag:
"26.11. Altpapier"
hier steht ja auch das ereignis dass "altpapier" fällig ist. gibt es die möglichkeit das wort "altpapier" rauszufiltern und als wert zu benutzen ???
lg
ralph
ps: dass das blockly so nicht funktioniert ist mir klar, da ja in dem eintrag jeweils auch ein datum steht und somit der wert jedesmal anders ist
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule_create" id="~F42H@zRO`rkzt^0x|9o" x="62" y="63"><field name="NAME">schedule</field> <value name="SCHEDULE"><shadow type="field_cron" id="EoAb!AZ!zes`q?tx1!l*"><field name="CRON">*/10 * * * *</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="2.+:~T4Sc2(}M]/8xDY["><value name="IF0"><block type="logic_operation" id="W+YKxw84J[5=Hf_M-|I%" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_operation" id="H1YPkcd;Z}.,wP[_ZO6I" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_operation" id="TsFpRi)cmccUkPic]3!{" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="}^,}ZPiP|j-2|/4we0?r"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="F7xX/4Lr#Ufb;6w8oHgE"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="eqwdjb)Kg8Yu`H-.|Ax^"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Gelber Sack</span></span></field></block></value></block></value> <value name="B"><block type="logic_compare" id="@F0N`BLPbC`Be-Z?Un,|"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="GPI6N;vJX1g8?pEb7T+^"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="h-ls7s86Cr`i)t{Wpr%/"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Gelber Sack</span></span></field></block></value></block></value></block></value> <value name="B"><block type="logic_operation" id="tIrYs8%J.w9L8(#+]Z[)" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="UmT:NWT-!C(4I^}`I@w2"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="KjWNP,Ho,[jlLKLleN)u"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="Cz)+{]-F|,r=:7,e~e!2"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">26.11\. </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Altpapier</span></span></field></block></value></block></value> <value name="B"><block type="logic_compare" id="qdUmL,~8+%U6{;DH@!)y"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="[!Hin)4#;VckfroI=IB_"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="V@l#uT[*xOT+ng-lRbhN"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">26.11\. </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Altpapier</span></span></field></block></value></block></value></block></value></block></value> <value name="B"><block type="logic_operation" id="c4WjuB=c{pb)kK?B^Mqk" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_operation" id="Ui^YHycMMOKKyw7I3~yY" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="iWoy!IU6{.gB*u,.{/pR"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="/c/{4p8JVDd}GX2Du{pX"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="wL4V@8~skvNXKX11!]df"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Hausmüll 14-täglich</span></span></field></block></value></block></value> <value name="B"><block type="logic_compare" id="Bw@U_R*lQG-mk]zm}.8|"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="]ZO_eA9??EOA@]VI.={8"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="D;,[3fiZGmXy3!4G7u2A"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Hausmüll 14-täglich</span></span></field></block></value></block></value></block></value> <value name="B"><block type="logic_operation" id="~tLTMJ?m{/M0.#3}pV7u" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="Tv(a}e%O?t!Ol06pA3.u"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="|)V1VJMWsNk5n%9AIvVm"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="3_1B3Eo%p:YQxqLS/It."><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Grünabfall</span></span></field></block></value></block></value> <value name="B"><block type="logic_compare" id="mf@WvyIVB8cM/:PKl7?]"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="9SDnvQ:OQGD]43}+w+]]"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id=".krxDu]`Cm8|YRa:A_Wm"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Grünabfall</span></span></field></block></value></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="comment" id="fxO9~kbYVRXAd_n#1p?P"><field name="COMMENT">Gelbe Säcke</field> <next><block type="controls_if" id="h#lNX:%dgx7YfCLuwG`r"><value name="IF0"><block type="logic_compare" id="s4g#qcNToeb^:6c]y0D8"><field name="OP">EQ</field> <value name="A"><block type="get_value" id=".%!j7?*E~kY.P`aq9+eB"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="nU8zqOiHr5N]zsd_+E_t"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Gelber Sack</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="/e.}QJ6R,+[)WKW#WATW"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="nY=7-XNcMBgIKid`uEsF"><field name="TEXT">1</field></block></value></block></statement> <next><block type="controls_if" id="OeZ+WC:-f40_axtFCK?e"><value name="IF0"><block type="logic_compare" id="l@/G.1IzEnN,v%IW+Z4]"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="DX^=`,my?mN[Bl(V2FT_"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id=",GDM!HsBK9Y4Z_b9?pXD"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Gelber Sack</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="#70Uq*[m]i]951*jI|Qp"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="(v+8eKKWkQ95`7q97uAb"><field name="TEXT">0</field></block></value></block></statement> <next><block type="comment" id="Cw#qu4x%oAXGm9.aZG7f"><field name="COMMENT">Altpapier</field> <next><block type="controls_if" id="D`w.G(?F|f}DiNmVx~va"><value name="IF0"><block type="logic_compare" id="7Fbxz=}6qymK6I3gSx*H"><field name="OP">EQ</field> <value name="A"><block type="get_value" id=".L7/U6p1B%fIevJod{n0"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="@TtK:%+WaHTzgF?zE2WX"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">26.11\. </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Altpapier</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="zi8,?s=GEyi.AP{.d1,C"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="?jH=w{1n[ij)W1Sys*XQ"><field name="TEXT">2</field></block></value></block></statement> <next><block type="controls_if" id="{S9W9Rn}K93E3OldCCO="><value name="IF0"><block type="logic_compare" id="oa!ZJ*=y+m1/oGXOcj=b"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id=")ics@gl;l+o3f3/oC?!t"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="4)y*bWPA,r}^(u}]r`#e"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">26.11\. </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Altpapier</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="Y(`BPw;)g%7k+K?1Xmj,"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="DJg{Ek}?JO%ER5Wu|HAL"><field name="TEXT">0</field></block></value></block></statement> <next><block type="comment" id="y~zF?I.=5KA:a*tx7!qG"><field name="COMMENT">Restmüll</field> <next><block type="controls_if" id="ecf[ORG!N|{Xm5}jG,l:"><value name="IF0"><block type="logic_compare" id="OEK_D2/J;]RSI;fW2}h!"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="V}m8atNarILig(YPTVDY"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="g?V=1/nO]yU2(G5%yWe7"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Hausmüll 14-täglich</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="i=bz2tS)BSLp^E@9iiFG"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="TW}y2pkvRcU[+`50/is#"><field name="TEXT">3</field></block></value></block></statement> <next><block type="controls_if" id="V1^4bcXL.{yy9~trP1cD"><value name="IF0"><block type="logic_compare" id="yx!@qthEco4*OQ_!2+8H"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="h`/Fz!^yYEh0+5lFMg89"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="[g0FdcTR`QjN%5[0yf.+"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Hausmüll 14-täglich</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="R,/LUQ5E~aeiA}n6SvzQ"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="a*RSuAv5N+e?XT1J04tQ"><field name="TEXT">0</field></block></value></block></statement> <next><block type="comment" id="waU*00*xSjzR5^oC]N3q"><field name="COMMENT">Grünabfall</field> <next><block type="controls_if" id="KLA+?(y~,-!0E9XJBK[["><value name="IF0"><block type="logic_compare" id="~#,H=n8O2C`#=B;lnrpm"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="WSTix20zNH6~p)Orfl-|"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="j^|OchtuTKl-l+IN[rb`"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Grünabfall</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="SEd!pR%`=t+xb31!X7hu"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="4W@y39IA-o=oNH#w*U0L"><field name="TEXT">4</field></block></value></block></statement> <next><block type="controls_if" id="TPL1{G/Jh.WLc+zZTwvG"><value name="IF0"><block type="logic_compare" id="])PVDkhm~}RRnao@/l;e"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="`ATZGqhbnh-oQJ}Oz5{5"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text" id="}fymXZl)A4.{-XKdCKqO"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Grünabfall</span></span></field></block></value></block></value> <statement name="DO0"><block type="control" id="5JN]UMznwn7-+A@In/d-"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id=".?Rv%#c-ug)=Ice-D8BI"><field name="TEXT">0</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></statement></block></xml>
-
nochmals ich,
habe mal einen neuen ansatz genommen, aber leider ohne erfolg. hat jemand eine idee wie ich den html text auf das wort "altpapier" durchsuchen kann und dann einen neuen status setze? oder ist meine ansatzweise zur lösung so verkehrt ???
lg
ralph
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule_create" id="H{M4I-reR%Na^s`=}XOs" x="13" y="13"><field name="NAME">schedule</field> <value name="SCHEDULE"><shadow type="field_cron" id="!Yf4j)q3,zK)A2s_Nxvn"><field name="CRON">*/15 * * * * *</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="Cw#qu4x%oAXGm9.aZG7f"><field name="COMMENT">Altpapier</field> <next><block type="controls_if" id="7J}VJOGcZK(*0V_e`K@~"><value name="IF0"><block type="logic_compare" id="]R}XwtuB]02GZAMm#4I?"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="3hX5L`S(.gz)`-95Tx)I"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text_indexOf" id="eAmf|gxuo0J^n4aENSnE"><field name="END">FIRST</field> <value name="VALUE"><block type="variables_get" id="(_hfd~9%QFnB`e:}a[c!"><field name="VAR">Text</field></block></value> <value name="FIND"><shadow type="text" id="{pJ_KpfUm)xu0Jk|].YM"><field name="TEXT">Altpapier</field></shadow></value></block></value></block></value> <statement name="DO0"><block type="update" id="koy.]L1m:0*[NH@)!7pW"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="tRS{)z4eza2~3hZ7oRsO"><field name="TEXT">2</field></block></value></block></statement></block></next></block></statement></block> <block type="text" id="4g8p?{htNmx,*~t@X=v#" x="412" y="1463"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Grünabfall</span></span></field></block></xml>
-
gibt hier schon jede Menge Müllkalender… einfach mal suchen.
Z.B. von pix gibts ne Lösung oder von mir, oder abgewandelt meine Version von PicNic oder auch von mikline... kein Grund, das Rad immer neu zu erfinden
Beispiel:
! ````
// Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird.
// Ursprung: tempestas
// Erweiterung: PicNic
! // http://forum.iobroker.net/viewtopic.php?f=21&t=3351&p=92282#p92282
! //debug in Log ausgeben
debug = true;
! // Anlegen JS State für VIS
! createState('javascript.0.muell.json', 0);
! // Array für Suchvariablen und Farbe des Müll-Icons
! var obj = { "Restabfall": "black", "Papiertonne": "darkblue", "Bioabfall": "brown", "Gelber Sack": "yellow"};
! function muell(){
! // Kalender auslesen (HTML Format)
! // **************************************************************************************
// Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
// **************************************************************************************var inhalt = getState("ical.2.data.html"/*HTML iCal table*/); // an deinen eigenen Kalender anpassen var inhaltString = inhalt.val.toString(); var inhaltStringReplace = inhaltString; var inhaltStringText; var i_search; // remove all inside SCRIPT and STYLE tags inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); // remove BR tags inhaltStringReplace=inhaltStringReplace.replace(/
/gi, "");
inhaltStringReplace=inhaltStringReplace.replace(/<br\s>/gi, "");
inhaltStringReplace=inhaltStringReplace.replace(/<br>/gi, "");// remove all else inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: inhaltStringReplace=inhaltStringReplace.replace(/ /gi," "); inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&"); inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"'); inhaltStringReplace=inhaltStringReplace.replace(/</gi,'<'); inhaltStringReplace=inhaltStringReplace.replace(/>/gi,'>'); if(debug) log(inhaltStringReplace);
! // n-ten Treffer finden
! function nthIndex(str, pat, n){
var L= str.length, i= -1;
while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/wochentage/auf/deutsch/var/wochentag="['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'" ];/json/starten/muelljason="[" ;/schleife/zur/abarbeitung/des/arrays/object.keys(obj).foreach/(function/(val,/key)/","/trennung/der/daten/json./sollte/nur/eine/müllart/angegeben/sein,/dann/die/nächsten/drei/zewilen/auskommentieren/(key="">0) {
muellJason += ",";
}
! // Zuweisung der Farbe für das MüllIcon
! var iconColor = obj[val];
! var muellIcon = " <svg class="icon dustbin "+iconColor+"" data-txt="dustbin@"+iconColor+"" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="35" height="35" viewBox="0 0 468 468" id="svg2996"><metadata id="metadata2998"> Created by potrace 1.8, written by Peter Selinger 2001-2007 rdf:rdf <cc:work rdf:about=""> dc:formatimage/svg+xml</dc:format> </cc:work> </rdf:rdf> </metadata></svg> ";
! // Position bestimmen
! var pos = inhaltStringReplace.indexOf( val, 1);
if(debug) log("pos ist: "+pos);
! var inhaltStringText = inhaltStringReplace.substring((pos-13),pos-3);
if(debug) log("Datum ist: "+inhaltStringText);
! nthIndex(inhaltStringText, ".", 1);
var t_m = inhaltStringText.slice(0, i_search);
var pos1 = i_search+1;
if(debug) log("pos1: " +pos1 );
! nthIndex(inhaltStringText, ".", 2);
var m_m = inhaltStringText.slice(pos1, i_search);
var pos2 = i_search+1;
if(debug) log("pos2: " +pos2 );
! var j_m = inhaltStringText.slice(pos2, inhaltStringText.len );
! // Datum des Abholtages setzen um den Wochentag zu ermitteln
var muelldate = new Date(j_m,m_m-1,t_m);
! // Hier kommt der Wochentag
! var d = muelldate.getDay();
! if(debug) log("Mülldate ist: "+wochentag[d]+", "+muelldate );
if(debug) log("Mülltag ist: "+t_m +" , " +m_m +" , " +j_m);
! // Datum heute ermitteln
! var today = new Date();
if(debug) log(today);
! //Tag ermitteln
var t = today.getDate();// Wochentag ermitteln zum testen var dd = today.getDay();
! //Monat ermitteln
! var m = today.getMonth()+1;
! //Jahr ermitteln
var j = today.getFullYear();if(debug) log("Datum heute ist: "+wochentag[dd]+", "+t+m+j);
// Berechnung Tagesdifferenzen
! var diff = 0;
var tage = "";
var dim = DaysInMonth(m, j); // Tage des aktuellen Monats
if(debug) log("Tage aktueller Monat: "+dim);
! if(j_m > j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?diff = parseInt(dim) - parseInt(t) + parseInt(t_m); } else diff = parseInt(t_m) - parseInt(t); if(debug) log("Tage bis zum nächsten Müll: "+diff); if(!isNaN(diff)){ tage = diff } else { tage = "Heute"; }
muellJason += "{"Müllart":" "+val+"","Tage":""+tage+""}"; //"Ereignis":""+muellIcon+"", "Tag":""+wochentag[d]+"","Datum":""+inhaltStringText+"",
}); // Ende forEach
! // json schließen
! muellJason += "]";
! // und hier nun die Werte eintragen
! setState('javascript.0.muell.json', muellJason);
! log("Müllkalender aktualisiert!");
! }
! schedule('30 5 * * *', function(){ // morgens um 5.30h wird aktualisiertmuell();
});
! // bei Start
! muell();</l){></br></br\s></style.></script.>Beispiel 2 >! ``` `/* Kalenderevent in der Zukunft suchen >! sucht im iCal Adapter nach events, die noch kommen viewtopic.php?f=21&t=3761&sid=4319378b32a0ce096bbbbfc0ebd859ce#p34975 >! 20.09.2016 erstellt von pix 13.11.2016 angepasst für Sven */ >! // User Anpassungen var aSuchstringLiteral = ['Gelber Sack', 'Papiertonne', 'Restabfall', 'Bioabfall']; // Suchbegriff var aSuchstring = ['GelberSack', 'Papiertonne', 'Restmüll', 'Bioabfall']; var stichtag = 1; // 0 heute; 1 morgen; 2 übermorgen; 3 In 3 Tagen var idTabelle = 'ical.2.data.table'; // Instanz eintragen var logging = false; // debug Log ein/ausschalten // Ende User Anpassungen >! for (var j = 0; j < aSuchstring.length; j++) { >! createState('muell.telegram.' + aSuchstring[j], false, { type: 'boolean', name: aSuchstringLiteral[j] + ' wird morgen abgeholt', desc: aSuchstringLiteral[j] + ' wird morgen abgeholt (Boolean)', def: false }); var idEventState = 'muell.telegram.' + aSuchstring[j]; if(logging) log (idEventState); setState(idEventState, false); } >! var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen >! function datum(x) { var jetzt = new Date(); if (logging) log('Jetztzeit: ' + jetzt); var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // if (logging) log('Zielzeit: ' + zeit); var jahr = zeit.getFullYear(); var monat = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1; var tag = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate(); return (tag + '.' + monat + '.' + jahr); } >! function pruefeKalender() { var kalender = getState(idTabelle).val; var tag = datum(parseInt(stichtag,10)); if (logging) log(tag); try{ var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String if (logging) log(ereignisse); for (var j = 0; j < aSuchstring.length; j++) { var idEventState = 'muell.telegram.' + aSuchstring[j]; for(var i = 0; i <kalender.length; 19/i++)/{/alle/events/durchgehen/if/(/(kalender[i].date.indexof(tag)/!="-1)" ||/(kalender[i].date.indexof(tage[stichtag])/)/string/datum/oder/relatives/(nicht/nicht)/gefunden,/also/gefunden/var/termin="kalender[i].event;" (termin.indexof(asuchstringliteral[j])/log('treffer:/'/+/tage[stichtag]/asuchstringliteral[j]);/hier/wird/später/vielleicht/stichtag_array/verwendet/setstate(ideventstate,/true);/sendto('telegram.0',/asuchstringliteral[j]/morgen/abgeholt.');/break;/}/else/false);/catch/(fehler_try)/log('fehler/beim/kalenderevents/einlesen/fehler_try,/'error');/schedule/check/19h/schedule('0/*/*',/pruefekalender);/bei/skriptstart/pruefekalender();/<e=""></kalender.length;>`[/i][/i][/i] ```
-
hi tempestas,
deinen lösungsvorschlag habe ich mir angesehen. mein erstes blockly zum müllkalender ist ja auch auf der grundlage von "kuddel", aus deinem beitrag.
ich bin anfänger was iobroker angeht und möchte was lernen so dass ich meine ideen umsetzen kann. leider kann ich kein java und somit kann ich z.b. dein skript nicht entsprechend anpassen auf meine bedürfnisse.
da ich noch mehrer projekte habe die ich für mich realisieren möchte und dort eine ähnliche problematiken auftreten wird, habe ich diese frage auch so extra gestellt damit ich eine lösung für mich finde, die ich verstehe und anpassen kann.
daher bleibt meine frage leider offen, wie kann ich in einem html text nach einem begriff suchen und daraus einen statuswert setzen? geht das mit blockly oder muss da tatsächlich ein java skript her?
für deine/eure hilfe bedanke ich mich im voraus!
lg
ralph
-
Dann kann ich leider nicht helfen, ich habe mir irgendwann JavaScript (rudimentär) beigebracht. Bei Klickibunti bin ich leider raus, sorry
achtrag: Die Fehlermeldung sagt, dass dein Suchbegriff nicht gefunden wird. In dem (für mich seltsamen) Blockly Export steht auch Altpapier nirgends drin
-
hat jemand eine idee wie ich den html text auf das wort "altpapier" durchsuchen kann und dann einen neuen status setze? `
Hast du es schon mal mit dem parser-Adapter versucht?
-
Huhu,
könntest mit diesem script nach altpapier im Kalender suchen und einen State beschreiben wieviel Tage es bis zum nächsten Mal sind.
Musste dazu in den Einstellungen von Ical alle haken entfernen bis auf den "Benutze Farben für HTML.
Im Skript var such1 auf Groß und Kleinschreibung achten sonst klappt es nicht…
P.S.: Script ist auch hier aus dem Forum !
// TESTSKRIPT FÜR NOXX // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird. debug = true; // Anlegen JS State für VIS createState('javascript.0.muell.altpapier', 0); //. gelb, blau usw entsprechend erstellen // Suchvariablen var such1= "altpapier"; // weitere Varialben für die anderen Müllsorten eintragen // Kalender auslesen (HTML Format) // ************************************************************************************** // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text // ************************************************************************************** var inhalt = getState("ical.0.data.html"/*HTML iCal table*/); // an deinen eigenen Kalender anpassen var inhaltString = inhalt.val.toString(); var inhaltStringReplace = inhaltString; var inhaltStringText; var i_search; // remove all inside SCRIPT and STYLE tags inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); // remove BR tags inhaltStringReplace=inhaltStringReplace.replace(/ /gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<br\s\>/gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<br\>/gi, ""); // remove all else inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: inhaltStringReplace=inhaltStringReplace.replace(/ /gi," "); inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&"); inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"'); inhaltStringReplace=inhaltStringReplace.replace(//gi,'>'); if(debug) log(inhaltStringReplace); // n-ten Treffer finden function nthIndex(str, pat, n){ var L= str.length, i= -1; while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/var/pos="inhaltStringReplace.indexOf(" such1,/1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-13),pos-1);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat? diff = parseInt(dim) - parseInt(t) + parseInt(t_m); } else diff = parseInt(t_m) - parseInt(t); if(debug) log("Tage bis zum nächsten Müll: "+diff); setState('javascript.0.muell.altpapier', diff);</l){></br\></br\s\></style.*></script.*>
-
hallo, und erst mal danke für eure antworten
> P.S.: Script ist auch hier aus dem Forum !
@ adnim: das skript habe ich gesehen, nur da haben wir wieder mein problem mit java. habe es mir nochmals angesehen aber ich denke dass mich das überfordert
@ dtp: mit dem adapter habe ich mich noch nicht beschäftigt und bin darüber noch nie gestolpert. habe ihn mal installiert und werde mich damit beschäftigen. scheint ja etwas umfangreicher zu sein ….
@ tempestas: vielen dank trotzdem
eigentlich ist es ja eine einfache geschichte was ich vor habe, hätte nicht gedacht dass es doch zum problem wird.
so theoretisch habe ich mir gedacht dass man den wert von "HTML iCal table" nimmt und nach einem wort oder auch "farbe" durchsucht und daraus einen wert erzeugen kann, welcher dann wiederum unter "objekte" hinterlegt wird.
was bewirkt denn mein zweites kleines blockly was ich zusammen gestellt habe? ich verstehe das so das er "HTML iCal table" durchsucht bis er das wort "altpapier" findet, wenn ja dann mach den "wert 2" in "müllstatus".
lg
ralph
-
steht denn in deinem ical html table überhaupt das Suchwort drin?
Dein Gedanke ist genau das, was mein Skript (eben nochmal von amdin gepostet) tut. Also der Grundgedanke ist genau richtig
-
hi tempestas,
ja das wort kommt vor unter der kalendererinnerung als unter ical html. sieht dann aktuell so aus:
26.11. Altpapier
27.11. Gelber Sackalso heute war altpapier (red) und morgen ist gelber sack (orange).
wenn ich deine kommentare im skript gelesen habe hast du dieses so aufgebaut dass es dann die abstände errechnet werden, habe ich das so richtig verstanden?
lg
ralph
ps: man müsste dann wohl den kalender so einstellen dass er nur einen tag abholt und dann wäre ja auch nur ein eintrag da. da kommt dann nur die frage wie ich mittwoch den wert unter "müllstatus" wieder auf "0" bekomme.
-
kannst du mal das echte javascript exportieren? mir fällt es schwer, das Blockly zu lesen (ich weiß nicht, ob die Systematik richtig ist, oder nicht)
edit: gibts bei blockly noch ne andere such Version?
-
morgen tempestas,
ich habe jetzt für mich erst mal eine lösung gefunden aber trotzdem möchte ich dieses thema weiter verfolgen und dann auf eine perfekte lösung umstellen.
ich habe jetzt die ".ics" datei genommen und mit dem notepad++ bearbeitet und jeweils den mülltermin um einen tag nach vorne gestellt. dann kann man ja im adapter "ical" events einstellen und nach dem ensprechenden begriff suchen. für ein jahr sind das 65 termine die geändert werden müssen - 5 minuten arbeit, einmal im jahr, wäre o.k..
ist jetzt natürlich eine krücke und deswegen möchte ich an einer anderen lösung arbeiten, sprich mit dem feld terminerinnerung da die problematik wieder kommen wird, in einem weiteren projekt.
hier das blockly als skript:
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule_create" id="H{M4I-reR%Na^s`=}XOs" x="13" y="13"><field name="NAME">schedule</field> <value name="SCHEDULE"><shadow type="field_cron" id="!Yf4j)q3,zK)A2s_Nxvn"><field name="CRON">*/15 * * * * *</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="Cw#qu4x%oAXGm9.aZG7f"><field name="COMMENT">Altpapier</field> <next><block type="controls_if" id="7J}VJOGcZK(*0V_e`K@~"><value name="IF0"><block type="logic_compare" id="]R}XwtuB]02GZAMm#4I?"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="3hX5L`S(.gz)`-95Tx)I"><field name="ATTR">val</field> <field name="OID">ical.0.data.html</field></block></value> <value name="B"><block type="text_indexOf" id="eAmf|gxuo0J^n4aENSnE"><field name="END">FIRST</field> <value name="VALUE"><block type="variables_get" id="(_hfd~9%QFnB`e:}a[c!"><field name="VAR">Text</field></block></value> <value name="FIND"><shadow type="text" id="{pJ_KpfUm)xu0Jk|].YM"><field name="TEXT">Altpapier</field></shadow></value></block></value></block></value> <statement name="DO0"><block type="update" id="koy.]L1m:0*[NH@)!7pW"><mutation delay_input="false"></mutation> <field name="OID">Müllabfuhr.0.Müllstatus</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="tRS{)z4eza2~3hZ7oRsO"><field name="TEXT">2</field></block></value></block></statement></block></next></block></statement></block> <block type="text" id="4g8p?{htNmx,*~t@X=v#" x="412" y="1463"><field name="TEXT"><span style="font-weight: bold; color: orange"><span class="icalPreWarn iCal-Müllkalender">Morgen </span></span><span style="font-weight: normal; color: orange"><span class='icalPreWarn2 iCal-Müllkalender2'> Grünabfall</span></span></field></block></xml>
lg
ralph
-
huhu rasiegfr,
meine meinung dazu ist (jeder kann ja wie er will machen), soll auch nur eine Hilfe sein…wenn du jetzt irgendwas versuchst du gleich versuchst im richtigen JavaScript klar zu kommen,für blocky ist ja die Basis auch javascript und das Grundsätzliche System ist gleich nur mit drag&drop...
eine Ical datei dann nochmal von Hand bearbeiten geht ja irgendwie am Thema Automatisieren vorbei!?
in dem Script musst du 4 felder anpassen und es durchsucht jeden Kalendar, also wenn du etwas andres aus dem kalender suchen willst kopierste das script veränderst das suchwort und fertig!?
habe die felder nochmal rausgesucht und im script extra kommentiert...
createState('javascript.0.muell.altpapier', 0); //hier das objekt zum speichern analog dem suchwort eintragen,das gleiche wie beim letzten Eintrag
var such1= "altpapier"; // HIER DAS SUCHWORT VERGEBEN, Case Sensitiv
setState('javascript.0.muell.altpapier', diff); //Schreibe Ergebnis in am anfang erstelles Objekt
var inhalt = getState("ical.0.data.html"/HTML iCal table/); //hier deinen Kalender eintragen
// TESTSKRIPT FÜR NOXX // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird. debug = true; // Anlegen JS State für VIS createState('javascript.0.muell.altpapier', 0); //hier das objekt zum speichern analog dem suchwort eintragen // Suchvariablen var such1= "altpapier"; // HIER DAS SUCHWORT VERGEBEN // Kalender auslesen (HTML Format) // ************************************************************************************** // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text // ************************************************************************************** var inhalt = getState("ical.0.data.html"/*HTML iCal table*/); // an deinen eigenen Kalender anpassen var inhaltString = inhalt.val.toString(); var inhaltStringReplace = inhaltString; var inhaltStringText; var i_search; // remove all inside SCRIPT and STYLE tags inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); // remove BR tags inhaltStringReplace=inhaltStringReplace.replace(/ /gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<br\s\>/gi, ""); inhaltStringReplace=inhaltStringReplace.replace(/<br\>/gi, ""); // remove all else inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: inhaltStringReplace=inhaltStringReplace.replace(/ /gi," "); inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&"); inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"'); inhaltStringReplace=inhaltStringReplace.replace(//gi,'>'); if(debug) log(inhaltStringReplace); // n-ten Treffer finden function nthIndex(str, pat, n){ var L= str.length, i= -1; while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/var/pos="inhaltStringReplace.indexOf(" such1,/1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-13),pos-1);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat? diff = parseInt(dim) - parseInt(t) + parseInt(t_m); } else diff = parseInt(t_m) - parseInt(t); if(debug) log("Tage bis zum nächsten Müll: "+diff); setState('javascript.0.muell.altpapier', diff); //Schreibe Ergebnis in am anfang erstelles Objekt</l){></br\></br\s\></style.*></script.*>
-
hi adnim,
werde mich damit mal am wochenede befassen. da brauche ich ruhe und zeit. das meine jetzige lösung eine "krücke" und mich nicht zufrieden stellt habe ich ja geschrieben.
mich ärgert nur (und das ist nur mein problem) dass ich dein skript nicht verstehe. ich werde mich da mal ranwagen, weil ich möchte eigentlich nicht mit meiner lösung leben, wie du schon geschrieben hast mit der automatisierung ….
ich danke euch allen für die zeit die ihr euch nehmt !
lg
ralph
-
Hast du mal im Scripteditor bei deinem Blockly auf den Button "zeige Code" geklickt?
Dann wird dir dein Blockly in JS angezeigt.
Vielleicht hilft es dir dann etwas besser JS zu verstehen.
Du kannst dir ja auch ein leeres Script zum Testen anlegen und dir einen einzelnen Block reinziehen. Dann schaust du dir an wie der als JS Code aussieht.
-
hi adnim,
werde mich damit mal am wochenede befassen. da brauche ich ruhe und zeit. das meine jetzige lösung eine "krücke" und mich nicht zufrieden stellt habe ich ja geschrieben.
mich ärgert nur (und das ist nur mein problem) dass ich dein skript nicht verstehe. ich werde mich da mal ranwagen, weil ich möchte eigentlich nicht mit meiner lösung leben, wie du schon geschrieben hast mit der automatisierung ….
ich danke euch allen für die zeit die ihr euch nehmt !
lg
ralph `
Hallo Ralph,
schau mal, in diesem Posting habe ich das von adnim gepostet Skript damals erstmalig für den User noxx erstellt:
viewtopic.php?f=21&t=3351&hilit=guten+m … 120#p79458
Hier:
viewtopic.php?f=21&t=3351&p=86026&hilit ... dra#p86026
da habe ich einem anderen User das Skript erklärt und Schritt für Schritt durchgeführt.
und zu guter letzt hier:
viewtopic.php?f=21&t=3351&p=86026&hilit ... dra#p91698
hat dann user PicNic mein Skript genommen und so erweitert, dass man gleich alle Müllarten auf einmal suchen kann. Das wäre aus meinem ersten Posting oben dann das Beispiel 1.
Wenn du dir das durchliest, wirst du lesen, was das Skript tut und welche Probleme es geben kann. Es ist inhaltlich nicht schwer zu verstehen. Wenn Fragen sind, können wir die gerne hier klären.
viel Erfolg
-
Hallo Ralph,
ich habe nochmal in meiner Ablage geschaut und dieses Skript gefunden ,dass ich mal geschrieben hatte. Es ist durchgehend kommentiert, vllt. hilft es dir. Das Skript sucht einfach nach "Morgen" und gibt dann alles aus, was morgen ansteht. D.h. du brauchst keinen Suchbegriff festlegen, im Gegenzug würde aber, wenn du einen gemischten Kalender hast (z.B. auch Geburtstage enthalten) alles was morgen ansteht mitgeteilt.
! ````
! // Skript schaut täglich um 18h, ob im Müllkalender das Wort "Morgen" vorkommt. Wenn ja, wird ein Telegram geschickt mit der betreffenden Müllsorte
// muss "ersetze Datum mit Worten" aktiviert haben
//v1.0 tempestas
! // Skripteinstellungen
! var debug = false;
! // Suchfunktion für Termin-Cutofffunction nthIndex(str, pat, n){
var L= str.length, i= -1;
while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" müll-funktion/function/muellwarnung()/{/var/inhalt="getState("ical.0.data.html").val.toString();" hier/deine/müll-kalender/instanz/eingeben/if(debug)/log(inhalt);/count="inhalt.split("Morgen").length" -1;/wie/häufig/wird/"morgen"/gefunden?/log("count/ist/"+count);/posstart="inhalt.indexOf(" 'morgen',/0);/sucht/das/erste/mal/log("posstart/"+posstart);/if(posstart/!="-1){" falls/gefunden/wurde/gehts/weiter/stringshort="inhalt.substring(posStart," inhalt.length);/abschneiden/von/allem,/was/links/vom/ersten/treffer/steht/log("gekürzt/:"/+stringshort);/nthindex(stringshort,/'</span="">', count); // hier wird nun geschaut, wo es rechts abgeschnitten werden muss
log('i_search ist '+i_search );
stringCut = stringShort.slice(0,i_search); // hier wird alles rechts abgeschnitten und so der finale String extrahiertif(debug) log("Fast Final: "+stringCut);
! // aufbereiten für telegram, entfernen von HTML Tags
! stringCut = stringCut.replace('
',"\n"); // Zeilenumbruch html durch telegram umbruch ersetzen
! // remove all inside SCRIPT and STYLE tags
stringCut=stringCut.replace(/<script.>[\w\W]{1,}(.?)[\w\W]{1,}</script>/gi, "");
stringCut=stringCut.replace(/<style.>[\w\W]{1,}(.?)[\w\W]{1,}</style>/gi, "");// remove BR tags. Werden durch sinnlose Zeichenkette ersetzt, nach der später gesucht wird stringCut=stringCut.replace(/
/gi, "");
stringCut=stringCut.replace(/<br\s>/gi, "");
stringCut=stringCut.replace(/<br>/gi, "");// remove all else stringCut=stringCut.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: stringCut=stringCut.replace(/ /gi," "); stringCut=stringCut.replace(/&/gi,"&"); stringCut=stringCut.replace(/"/gi,'"'); stringCut=stringCut.replace(/</gi,'<'); stringCut=stringCut.replace(/>/gi,'>');
!
sendTo('telegram', stringCut);}
}! // Trigger Schedule
! schedule('0 18 * * ', function(){ // Täglich um 18h
! muellWarnung();
});
! // Bei Start
! muellWarnung();</br></br\s></style.></script.*></l){> -
hallo zusammen,
ihr seit echt göttlich dass ihr mir helfen wollt. ich werde mich am wochenende wie gesagt mal ransetzen, das geht für mich nicht so zwischendurch. möchte es ja halbwegs verstehen was ich da tue.
@ tempestas: deinen letztes skript wird für mich nicht in frage kommen. ich habe zwar einen extra kalender dafür, möchte aber unterscheiden können. da ich das ganze im wohnzimmer grafisch darstelle in vis bringt mich dann eine textausgabe leider nicht weiter.
ich danke euch allen für eure hilfe und melde mich montag wie es ausgegangen ist
lg
ralph
9191_vis_2018.jpg -
Wenn ihr euren Kalender auf dem Google Home ansagen lasst, welche Stimme nehmt ihr?
Die ganzen sayit Stimmen sind so blechern und hören sich derbe nach Computer an.
Gibt es ne Möglichkeit wie bei Alexa die Original Google Stimme sprechen zu lassen?
Die Google Home Stimme aus dem sayit Adapter klingt bei weitem nicht wie das Original.
-
Hab es anders gelöst. Mit Blockly und der Hilfe von der soundoftext.com Seite.
Unter Soundoftext.com kann man beliebige Wörter, Sätze eingeben und in Deutsch ausgeben lassen.
Das File kann man sofort als mp3 speichern.
Die Stimme ist jetzt nicht mega menschlich, aber irgendwie klarer und deutlicher als die im Adapter gespeicherten.
Das mp3 File dann in den sayit.0 Adapter und dann kann man es im Blockly zu allem verwenden.