Müllkalender
Moderator: Co-Administratoren
-
- Beiträge: 87
- Registriert: 05.07.2019, 16:14
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 4 Mal
Re: Müllkalender
Ich habe mir das google-Script aus dem Post viewtopic.php?f=35&t=34325&start=30#p330178 umgeschrieben, um mir meine Schichten anzeigen zu lassen. Frühschicht, Spätschicht, Nachtschicht, Urlaub. Es funktioniert auch soweit. Nur bei Frühschicht zeigt er mir nichts an, da der nächste Termin in 6 Wochen ist. Kann ich den Suchzeitraum erweitern oder ist er begrenzt? Ich habe zu Testzwecken Frühschicht mal auf Samstag gesetzt, das Funktioniert auf jeden Fall. Meine nächste Frühschicht ist erst wieder am 11.11.
-
- Beiträge: 87
- Registriert: 05.07.2019, 16:14
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 4 Mal
Re: Müllkalender
Zu der oben gestellten Frage, die leider noch keiner beantworten konnte, habe ich jetzt noch eine 2.Frage:
Das Script, was ich für mich angepasst habe, zeigt mir ja jetzt an, wann der erste Termin ist, also immer den 1. von 5 aufeinander folgenden Tagen.
Gerne würde ich mir aber die nächsten 2 Termine anzeigen lassen, z.B. wenn heute (Montag) Frühschicht ist, dann den Dienstag. Wenn heute (Freitag) Frühschicht ist, den nächsten Tag z.B. in 3 Wochen (Schichtplan ändert sich schonmal!).
Wie kann man das anpassen, zur Zeit sucht er ja nur nach dem nächsten Termin, wie kann ich nach dem übernächsten Termin suchen lassen?
Das Script, was ich für mich angepasst habe, zeigt mir ja jetzt an, wann der erste Termin ist, also immer den 1. von 5 aufeinander folgenden Tagen.
Gerne würde ich mir aber die nächsten 2 Termine anzeigen lassen, z.B. wenn heute (Montag) Frühschicht ist, dann den Dienstag. Wenn heute (Freitag) Frühschicht ist, den nächsten Tag z.B. in 3 Wochen (Schichtplan ändert sich schonmal!).
Wie kann man das anpassen, zur Zeit sucht er ja nur nach dem nächsten Termin, wie kann ich nach dem übernächsten Termin suchen lassen?
-
- Beiträge: 96
- Registriert: 25.04.2017, 17:19
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 4 Mal
Re: Müllkalender
Ich habe mir gerade das HM-Script zum Auslesen des Müllkalenders aus dem Google Kalender umgeschrieben.
Das ganze ist jetzt kompakter und macht auch keinen Ärger mehr mit der 2. Systemvariable
Das ganze ist jetzt kompakter und macht auch keinen Ärger mehr mit der 2. Systemvariable
Code: Alles auswählen
var scriptID = "scriptid"; ! ID Google Script, also die scriptid aus: https://script.google.com/macros/s/scriptid/exec
string pass = "test"; ! Kennwort, das im Google-Script hinterlegt ist
string svPrefix = "Waste_"; ! Prefix der Systemvariablen
string days="today;tomorrow"; ! Postfix Sysvar: SysVar heisst dann "Waste_today" bzw. "Waste_tomorrow" - Reihenfolge von heute;morgen und Anzahl NICHT ändern (Umbenennen OK)
string separator = ", "; ! Separator für mehrere Werte in der SysVar
!!! ab hier keine Aenderungen mehr noetig !!!
var url = "https://script.google.com/macros/s/" # scriptID # "/exec";
string iterDay;
foreach(iterDay, days.Split(";")) {
var cmdDay = "events";
if (iterDay == days.StrValueByIndex(";", 1)) {
cmdDay = "eventstomorrow";
}
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=" # pass # "&cmd=" # cmdDay # "'";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var oV = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var sWaste = dom.GetObject(svPrefix # iterDay);
string lTextNeu = "keinMüll";
if (oV.Length() > 0) {
lTextNeu = oV.Replace(";", separator).ToLatin();
}
if (sWaste.Value() != lTextNeu) {
sWaste.State(lTextNeu);
}
}
RPi 3B im Serverschrank mit Aurel Groundplane Antenne an RPI-RF-MOD - Firmware: 3.53.30.20200919
LanGW: RPi Model A 256MB RAM mit HM-MOD-RPI-PCB, HMIP-HAP als LanGW 2.2.18, ~ 100 Geräte, IOBroker, Lightify
Addons: XML-API 1.20 - CUx-Daemon 2.4.4- WebMatic 2.2.3
LanGW: RPi Model A 256MB RAM mit HM-MOD-RPI-PCB, HMIP-HAP als LanGW 2.2.18, ~ 100 Geräte, IOBroker, Lightify
Addons: XML-API 1.20 - CUx-Daemon 2.4.4- WebMatic 2.2.3
-
- Beiträge: 87
- Registriert: 05.07.2019, 16:14
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 4 Mal
Re: Müllkalender
Gibt es eine Möglichkeit die Uhrzeit von dem Event abzufragen?
Edit:
Mit ein bischen "rumgebastel" (bin anfänger) habe ich es hinbekommen, dass mir die Uhrzeit angezeigt wird.
Kann mir jemand erklären, warum mir bei Minuten die Uhrzeit + 4minuten angezeigt wird, wenn ich HH.MM eingebe?
Edit2:
Habe es selber herausgefunden was da passiert.
Für die, die irgendwann selber mal auf dieses "Problem" stoßen, schreibe ich es hier mal auf:
hh => Stunden im 12-Std. Format
HH => Stunden im 24-Std. Format
mm => Minuten
MM => Kalendermonat da wir aktuell April haben wird mir dann natürlich 04 angezeigt!!
Edit:
Mit ein bischen "rumgebastel" (bin anfänger) habe ich es hinbekommen, dass mir die Uhrzeit angezeigt wird.
Code: Alles auswählen
var timezone = CalendarApp.getCalendarById(cal).getTimeZone();
var res = Utilities.formatDate(aEvent.getStartTime(), timezone, "HH.mm");
Edit2:
Habe es selber herausgefunden was da passiert.
Für die, die irgendwann selber mal auf dieses "Problem" stoßen, schreibe ich es hier mal auf:
hh => Stunden im 12-Std. Format
HH => Stunden im 24-Std. Format
mm => Minuten
MM => Kalendermonat da wir aktuell April haben wird mir dann natürlich 04 angezeigt!!
-
- Beiträge: 66
- Registriert: 04.11.2018, 13:17
Re: Müllkalender
Hallo geht den die Funktion mit https://feed.mikle.com nicht mehr ? ich bekomme nach dem eingeben meiner gmail id keine anzeige mehr ? auch mit dem öffentlichen link nicht ?
-
- Beiträge: 6688
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 478 Mal
Re: Müllkalender
Hast Du denn einen Plan von Feedwind abgeschlossen, ansonsten wird das wohl auf dem Weg nicht funktionieren?Chrisidonner hat geschrieben: ↑28.06.2020, 21:00ich bekomme nach dem eingeben meiner gmail id keine anzeige mehr ?
-
- Beiträge: 66
- Registriert: 04.11.2018, 13:17
-
- Beiträge: 6688
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 478 Mal
-
- Beiträge: 66
- Registriert: 04.11.2018, 13:17
Re: Müllkalender
33zdenko hat geschrieben: ↑30.12.2016, 20:22Hallo
Hier noch eine Anleitung zur Einbindung eines im Google Kalender erstellten Müllkalender, auch andere Kalender sind damit realisierbar.
Was hier besonders ist, man braucht keine Webseiten in Neo einzubinden, sondern realisiert es mit einem HM Script und 2 Variablen, welche man dann als Grafiken
und Textstatus, im Neo anzeigt.
Ich habe es so gemacht das mir die Termine für Heute und Morgen angezeigt werden, fallskeine sind wird eine Grafik angezeigt, kein Müll.
Was man noch braucht, ist ein Google Script, aus diesem Thread: http://homematic-forum.de/forum/viewtop ... 10#p100205 von dem User DrTob, welches ich ganz wenig verändert habe, um einen anderen in Google erstellten Kalenderabzufragen, mit angabe der ID des Kalenders.
Zuerst geht man in Google Kalender und erstellt einen neuen Kalender, mit dem Namen z.b. Müllkalender. Nun importiert man einen ics, csv Kalender von seinem Anbieter, wenn man nur ein Pdf hat,
muss man die Termine dann selbst eintragen, aber das ist auch schnell erledigt.
Was man beim Import zu beachten ist, dass man bei importieren angibt den richtigen, neuerstellten Kallender.
Es sollten keine anderen Termine eingetragen sein, als Mühlabfuhr, da es sonst nicht zur richtiger zuweisung der Variablen kommt, im HM Script.
Jetzt geht man hier weiter zu http://script.google.com/
und dort fügt man dann dieses script ein:wichtig ist das man diese Zeile ganz oben, anpasst, mit der richtiger ID eigens Kalenders.Code: Alles auswählen
//Configuration //Calendar to access (ID) var cal = 'xxxxxxxxxxxxxx@group.calendar.google.com'; function doGet(request) { var answer = "1.4"; var d = 1 * request.parameters.d; if (isNaN(d)){ d = 0; }; if ( request.parameters.pwd == "test") { if ( request.parameters.cmd == "urlaub" ) { answer = getVacation(d); } else if (request.parameters.cmd == "urlaub_ex" ) { answer = getVacationEx(d); } else if (request.parameters.cmd == "events" ) { answer = getEventsOfDay(d); } else if (request.parameters.cmd == "eventstomorrow" ) { answer = getEventsOfDay(1); } else if ((request.parameters.cmd == "muell") && (request.parameters.color)) { if (request.parameters.mode == "nextdate") { answer = FormatedEventDate(findNextMuell(request.parameters.color)); } else if (request.parameters.mode == "indays") { answer = DaysUntilEvent(findNextMuell(request.parameters.color)); } else { answer = DaysUntilEventNice(findNextMuell(request.parameters.color)); } } } return ContentService.createTextOutput(answer); } function getEventsInRange(aStart, aEnd) { var events = CalendarApp.getCalendarById(cal).getEvents(aStart, aEnd); var result = new Array; var eventStart = 0; var eventEnd = 0; var startTime = aStart.getTime(); var endTime = aEnd.getTime(); for (var i=0; i<events.length; i++) { //Zeiten testen (bug bei allDayEvents) //ich verzichte auf Anpassung von Start/Endzeit auf UTC, bei Abfage von ganzen Tagen sind die korrekten Events enthalten, //die zusätlich von angrenzenden Tagen enthaltenen Events werden hier aussortiert. if ((events[i].getEndTime().getTime() > startTime) && (events[i].getStartTime().getTime() < endTime)) { result.push(events[i]); } } return result; } function daysEvents( aDate ) { var startOfDay = new Date(aDate); startOfDay.setHours(0); startOfDay.setMinutes(0); startOfDay.setSeconds(0); startOfDay.setMilliseconds(0); var endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000); return getEventsInRange(startOfDay, endOfDay); } function findNext( aPattern ) { var patt=new RegExp(aPattern,'i'); var startDate = new Date(); var endDate = new Date(startDate.getTime() + (24*60*60*1000*30)); var events = getEventsInRange(startDate, endDate); for (var i=0; i<events.length; i++) { //check event title if (patt.test(events[i].getTitle())) { return events[i]; } } } function findNextGreen() { return findNext("grüne Tonne|Grünabfall"); } function findNextGrey() { return findNext("graue Tonne|Restmüll|Restmuell|Restabfall"); } function findNextYellow() { return findNext("gelber Sack|gruener Punkt|gelbe Säcke|gelbe Saecke"); } function findNextBrown() { return findNext("braune Tonne|Biotonne|Biomüll|Biomuell|Bioabfall"); } function findNextBlue() { return findNext("blaue Tonne|Papiermüll|Papiermuell|Altpapier"); } //Events am Tag aDay ab heute (0 = heute, 1 = morgen...) function eventsOfDay(aDay) { var now = new Date(); var day = new Date(now.getTime() + (1000*3600*24*aDay)); var events = daysEvents( day ); return events; } function findNextMuell( aColor ) { if (aColor == 'grey') { return findNextGrey(); } else if (aColor == 'green') { return findNextGreen(); } else if (aColor == 'blue') { return findNextBlue(); } else if (aColor == 'yellow') { return findNextYellow(); } else if (aColor == 'brown') { return findNextBrown(); } } //Urlaub am Tag aDay (0 = heute, 1=morgen...) function getVacation( aDay ) { var events = eventsOfDay( aDay ); var result = "0"; //add here your search definitions for vacation description and location 'home' var pattVacation=new RegExp('urlaub|vacation|frei','i'); // var pattHome=new RegExp('hause|home','i'); for (var i=0; i<events.length; i++) { var theTitle=events[i].getTitle(); if ( pattVacation.test(events[i].getTitle()) && events[i].isAllDayEvent() ) { result="1"; break; } } return (result); } // added from http://homematic-forum.de/forum/viewtopic.php?f=31&t=11386#p84827 function getVacationEx( aDay ) //creates a bit mask including todays and tomorrows vacation information { //init bit mask and flags var result = 0x0; //0000 - initial value var vacationToday = 0x1; // 0001 - today is an vacation day var atHomeToday = 0x2; // 0010 - vacation today is at home var vacationTomorrow = 0x4; // 0100 - tomorrow is an vacation day var atHomeTomorrow = 0x8; // 1000 - vacation tomorrow is at home //add here your search definitions for vacation description and location 'home' var pattVacation=new RegExp('urlaub|vacation|frei|homeoffice','i'); var pattHome=new RegExp('hause|home','i'); //get information about today's vacation var eventsToday = eventsOfDay(aDay); for (var i=0; i<eventsToday.length; i++) { //check event title if (pattVacation.test(eventsToday[i].getTitle())) { result = result | vacationToday; // if (pattHome.test(eventsToday[i].getTitle()) || pattHome.test(eventsToday[i].getLocation())|| pattHome.test(eventsToday[i].getDescription())) { result = result | atHomeToday; } } } //get information about tomorrow's vacation var eventsTomorrow = eventsOfDay(aDay + 1); for (var i=0; i<eventsTomorrow.length; i++) { if (pattVacation.test(eventsTomorrow[i].getTitle())) { result = result | vacationTomorrow; if (pattHome.test(eventsTomorrow[i].getTitle()) || pattHome.test(eventsTomorrow[i].getLocation())|| pattHome.test(eventsTomorrow[i].getDescription())) { result = result | atHomeTomorrow; } } } return (result.toString()); } function getEventsOfDay( aDay ) { var events = eventsOfDay(aDay); var result = ""; for (var i=0; i<events.length; i++) { if ( result.length > 0) { result = result+";"; } result = result + events[i].getTitle().toLowerCase(); } return result; } function FormatedEventDate( aEvent ) { if (aEvent) { var timezone = CalendarApp.getCalendarById(cal).getTimeZone(); var res = Utilities.formatDate(aEvent.getStartTime(), timezone, "dd.MM.yyyy"); return res; } } function DaysUntilEvent( aEvent ) { if (aEvent) { var startOfToday = new Date(); startOfToday.setHours(0); startOfToday.setMinutes(0); startOfToday.setSeconds(0); startOfToday.setMilliseconds(0); var differenceInMillis = aEvent.getStartTime() - startOfToday.getTime(); return Math.floor( differenceInMillis /1000/60/60/24 ); } } function DaysUntilEventNice( aEvent ) { result = ''; var days = 1 * DaysUntilEvent(aEvent); if (!isNaN(days)) { if (days == 0) { result = 'Heute'; } else if (days == 1) { result = 'Morgen'; } else if (days == 2) { result = 'Übermorgen'; } else { result = 'In ' + days + ' Tagen'; } } else { result = 'nicht gefunden'; } return result; }
Ist da eingetragen, muss man die Datei speichern, im menu links, Datei/File wählen und Speichern, namen einegeben z.b. homematic oder was auch immer.Code: Alles auswählen
var cal = 'xxxxxxxxxxxxxx@group.calendar.google.com
Jetzt muss man das Script als WebApp veröffentlichen, im menu auf veröffentlichen gehen, als Web App einrichten.
In dem Fenster muss man es so einstellen:
Bildschirmfoto 2016-12-30 um 17.42.39.png
wichtig ist als ich und im Zugriff, alle auch anonyme Nutzer.
auf einrichten klicken, jetzt kommt ein neues fenster:
Bildschirmfoto 2016-12-30 um 17.49.05.png
diesen code kopiert man sich, klickt OK, und gibt es in andrem Tab des Browser ein...
Ist alles richtig, bekommt man 1.4 als Antwort zurück.
Jetzt zum testen macht man für Heute und Morgen, Termine im Müllkalender, z.b. Altpapier in Heute, Gelber Sack in Morgen Termin
Nun gibt man die URL ein welche oben schon in Browser eingegeben wurde, ergäntzt um: '?pwd=test&cmd=events' ... was so in etwa so aussieht:das sollte jetzt altpapier zurückliefernCode: Alles auswählen
https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec?pwd=test&cmd=events
dann noch das:was dann gelber sack liefern sollte.Code: Alles auswählen
https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec?pwd=test&cmd=eventstomorrow
Wenn das klappt, jetz gehen wir zum homematic Teil, zuerst 2 Variablen auf der CCU anlegen, beide als Zeichenkette:Wichtig! Cuxd addon muss auf der zentrale laufen und ein System exec Gerät muss dort vorhanden sein, sonst hier im Forum nachschauen....Code: Alles auswählen
MuellHeute MuellMorgen
Jetzt auf der CCU bei Programme und Verknüpfungen gehen und dort auf Script testen klicken und diesen Code einfügen:die erste Zeile anpassen:Code: Alles auswählen
var url="https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec"; var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=events'"; dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd); dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1); var oV = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State(); var lMuell = dom.GetObject("MuellHeute"); WriteLine("x" # oV # "x"); if ( oV == "" ){ oV = "keinMüll"; lMuell.State(oV); } else { string lErsetzen = "ä,ü,ö"; string lErsetzenDurch = "ä,ü,ö"; string lTextNeu = oV; integer lPos = 0; integer lIndex = 0; string lSplit = ""; boolean lLoop = true; foreach (lSplit, lErsetzen.Split(",")) { lLoop = true; while (lLoop) { lPos = lTextNeu.Find(lSplit); if (lPos == -1) { lLoop = false; } else { lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) ); } } lIndex = lIndex + 1; } } oV = ""; string lBind = ", "; foreach (lSplit, lTextNeu.Split(";")) { oV = oV + lBind + lSplit; lTextNeu = oV.Substr(2,oV.Length()); } if ( lTextNeu != "") { lMuell.State(lTextNeu); WriteLine(lTextNeu); } var url="https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec"; var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L '" # url # "?pwd=test&cmd=eventstomorrow'"; dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd); dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1); var oV = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State(); var lMuell = dom.GetObject("MuellMorgen"); WriteLine("x" # oV # "x"); if ( oV == "" ) { oV = "keinMüll"; lMuell.State(oV); } else { string lErsetzen = "ä,ü,ö"; string lErsetzenDurch = "ä,ü,ö"; string lTextNeu = oV; integer lPos = 0; integer lIndex = 0; string lSplit = ""; boolean lLoop = true; foreach (lSplit, lErsetzen.Split(",")) { lLoop = true; while (lLoop) { lPos = lTextNeu.Find(lSplit); if (lPos == -1) { lLoop = false; } else { lTextNeu = lTextNeu.Substr(0,lPos) # lErsetzenDurch.StrValueByIndex(",",lIndex) # lTextNeu.Substr(lPos + lSplit.Length() , ((lTextNeu.Length() - lPos) - lSplit.Length()) ); } } lIndex = lIndex + 1; } } oV = ""; string lBind = ", "; foreach (lSplit, lTextNeu.Split(";")) { oV = oV + lBind + lSplit; lTextNeu = oV.Substr(2,oV.Length()); } if ( lTextNeu != "") { lMuell.State(lTextNeu); WriteLine(lTextNeu); }
mit euererCode: Alles auswählen
var url="https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec"
noch weiter unten ist auch so eine Zeile, diese auch anpassen:
wichtig ist nur das zwischen den anführungszeichen zu ersetzen!
jetzt ausführen anklicken, und schon mussten euere 2 Variablen befüllt sein mit den Werten aus dem Kalender.
Nun ist es möglich mit diesem Script beliebig viele Termine eines Tages auszulesen...
Die Variablen werden so befüllt:
zb.MuellHeute= termin1, termin2, termin3 oder z.b. gelber sack, restmüll, bioabfall.... hängt davon ab wieviele eintragungen für einen Tag im Kalender vorhanden sind.
Bei mir sind höchstens drei Termine an einem Tag drinn, manchmal 2 und an einigen Tagen nur eins.
Deswegen habe ich mir einzelne Grafiken für Neo angelegt, wie in diesem Post: http://homematic-forum.de/forum/viewtop ... 30#p103396
So habe ich mir alle Grafiken in der Breite von 180px und Höhe von 60px angelegt:
bioabfall.png
da ist nur ein bild drinn 60x60px aber die grafik ist 180px breit, so wenn jetzt mehrere termine ausgelesen werden (bis zu 3 bei mir) solche Grafik entstehen kann:
mit 2 terminen:
gelber sack-bioabfall.png
oder auch 3 manschmall:
problemabfall-gelber sack-bioabfall.png
Da die neuen CCU Variablen in Neo noch nicht bekannt sind muss man sie zuerst im Geräte Manager importieren,um sie als Status verwenden zu können.
Am besten man legt alle Grafiken für Neo in einem Ordner am PC an
Jetzt werden sie in Neo erstmall importiert, wie im Bild:
zuerst erstellt man eine Grafik im Neo, aus dem menü links
und stellt man die breite und höhe eigener grafik ein, jetzt rechts bei status, den status der grafik zuweisen, gateway auswählen und dann die Variable, MuellHeute wählen.
Bildschirmfoto 2016-12-30 um 19.21.01.png
jetzt bei icon rechts den stift klicken und in dem fenster auf importieren oben klicken, jetzt machen wir das für alle grafiken für unseren kalender:
Bildschirmfoto 2016-12-30 um 19.44.08.png
wichtig ist ein eigenen Typ zu machen, im Bild Abfall z.b....bei Still kann man meins schreiben oder eigener...
bei Name ist wichtig den Namen so zu wählen (schreiben!):
state_bioabfall.png wenn der termin im Kalender so eingetragen ist
dann z.b. state_restabfall, altpapier.png wenn die termine im kalender so eingetragen sind, bitte beachten dass wenn die termine so engetragen sind:
Bildschirmfoto 2016-12-30 um 19.51.40.png
die Variable dann so befüllt wird: bioabfall, altpapier -also von unten nach oben bennant...
so muss dann die grafik bei name, im import fenster im neo exaxt heissen:
state_bioabfall, altpapier.png (beachte das lerzeichen hinter komma)
und nun weiter machen für jede weitere grafik bzw. möglichen fall:
jetzt z.b. für den fall das drei termine eingetragen sind:
Bioabfall
Gelber Sack
Problemabfall
liefert die variable dann umgekehrt die reihenfolge...also muss die grafik dann heissen:
state_problemabfall, gelber sack, bioabfall.png
es ist nicht wichtig wie die zu importierende grafik am pc heisst!!!
nochmal im Bild:
Bildschirmfoto 2016-12-30 um 20.05.24.png
Nicht vergessen jedesmal Importieren zu klicken.
Man braucht zumindest eine grafik die den status undefined.png haben muss:
Bildschirmfoto 2016-12-30 um 20.10.15.png
Wenn alle grafiken importiert sind, müssen wir noch die statusregeln definieren:
auf das +hinzufügen klicken und einen namen geben, und jetzt so erstellen:
bei wert den status eintragen, genauso wie variable liefert. z.b. problemabfall, bioabfall
hier ohne state_ davor
dann daneben das bild auswählen, unter dem typ Abfall und Still meins, erscheinen die entsprechende grafiken:
die grafik dann wählen passend für variablen status.
Viel Spaß! und Alles Gute in Neuem Jahr!
Edit: ZeilenGeändert inCode: Alles auswählen
function findNextGreen() { return findNext("grüne Tonne|Grünabfall|"); }
Edit: wenn alles läuft, dann auf der ccu ein programm erstellen, bei wenn zeitsteuerung, jeden tag um 0:05, bei dann dieses ccu script von oben ausführen.Code: Alles auswählen
function findNextGreen() { return findNext("grüne Tonne|Grünabfall"); }
Aber dieses Script läuft noch oder ? Bevor ich mir die Mühe mache
-
- Beiträge: 269
- Registriert: 14.11.2018, 20:43
- System: CCU
- Wohnort: Bayern
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 17 Mal