Müllkalender

Haussteuerung mittels mediola

Moderator: Co-Administratoren

Torsten_MG
Beiträge: 87
Registriert: 05.07.2019, 16:14
Hat sich bedankt: 2 Mal
Danksagung erhalten: 4 Mal

Re: Müllkalender

Beitrag von Torsten_MG » 03.10.2019, 08:54

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.

Torsten_MG
Beiträge: 87
Registriert: 05.07.2019, 16:14
Hat sich bedankt: 2 Mal
Danksagung erhalten: 4 Mal

Re: Müllkalender

Beitrag von Torsten_MG » 06.10.2019, 18:31

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?

trevyn
Beiträge: 96
Registriert: 25.04.2017, 17:19
Hat sich bedankt: 9 Mal
Danksagung erhalten: 4 Mal

Re: Müllkalender

Beitrag von trevyn » 16.01.2020, 17:43

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 :-)

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

Torsten_MG
Beiträge: 87
Registriert: 05.07.2019, 16:14
Hat sich bedankt: 2 Mal
Danksagung erhalten: 4 Mal

Re: Müllkalender

Beitrag von Torsten_MG » 17.04.2020, 18:46

Gibt es eine Möglichkeit die Uhrzeit von dem Event abzufragen?

Edit:

Mit ein bischen "rumgebastel" :D (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");
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!!

Chrisidonner
Beiträge: 66
Registriert: 04.11.2018, 13:17

Re: Müllkalender

Beitrag von Chrisidonner » 28.06.2020, 21:00

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 ?

Fonzo
Beiträge: 6687
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 478 Mal

Re: Müllkalender

Beitrag von Fonzo » 28.06.2020, 22:14

Chrisidonner hat geschrieben:
28.06.2020, 21:00
ich bekomme nach dem eingeben meiner gmail id keine anzeige mehr ?
Hast Du denn einen Plan von Feedwind abgeschlossen, ansonsten wird das wohl auf dem Weg nicht funktionieren?

Chrisidonner
Beiträge: 66
Registriert: 04.11.2018, 13:17

Re: Müllkalender

Beitrag von Chrisidonner » 28.06.2020, 22:18

Achso kostet dies jetzt oder wie ? 😆

Fonzo
Beiträge: 6687
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 478 Mal

Re: Müllkalender

Beitrag von Fonzo » 28.06.2020, 22:33

Chrisidonner hat geschrieben:
28.06.2020, 22:18
Achso kostet dies jetzt oder wie ? 😆
Sieht wohl so aus.

Chrisidonner
Beiträge: 66
Registriert: 04.11.2018, 13:17

Re: Müllkalender

Beitrag von Chrisidonner » 28.06.2020, 22:51

33zdenko hat geschrieben:
30.12.2016, 20:22
Hallo
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:

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;
    }
wichtig ist das man diese Zeile ganz oben, anpasst, mit der richtiger ID eigens Kalenders.

Code: Alles auswählen

var cal = 'xxxxxxxxxxxxxx@group.calendar.google.com
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.
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:

Code: Alles auswählen

https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec?pwd=test&cmd=events
das sollte jetzt altpapier zurückliefern
dann noch das:

Code: Alles auswählen

https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec?pwd=test&cmd=eventstomorrow
was dann gelber sack liefern sollte.

Wenn das klappt, jetz gehen wir zum homematic Teil, zuerst 2 Variablen auf der CCU anlegen, beide als Zeichenkette:

Code: Alles auswählen

MuellHeute
MuellMorgen
Wichtig! Cuxd addon muss auf der zentrale laufen und ein System exec Gerät muss dort vorhanden sein, sonst hier im Forum nachschauen....

Jetzt auf der CCU bei Programme und Verknüpfungen gehen und dort auf Script testen klicken und diesen Code einfügen:

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);
}
die erste Zeile anpassen:

Code: Alles auswählen

var url="https://script.google.com/macros/s/AKfybwMTT5r0Lk7Uazfisi7sLPI_zRBkzFWO3zg-3UUI/exec"
mit euerer
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: Zeilen

Code: Alles auswählen

    function findNextGreen()
    {
      return findNext("grüne Tonne|Grünabfall|");
    }
Geändert in

Code: 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.

Aber dieses Script läuft noch oder ? Bevor ich mir die Mühe mache 🙈

cityofsilence
Beiträge: 269
Registriert: 14.11.2018, 20:43
System: CCU
Wohnort: Bayern
Hat sich bedankt: 14 Mal
Danksagung erhalten: 17 Mal

Re: Müllkalender

Beitrag von cityofsilence » 29.06.2020, 11:06

Zumindest heute Morgen hat es mir den richtigen Müll angezeigt :lol:
Gruß André

Antworten

Zurück zu „mediola“