Skip to content

Instantly share code, notes, and snippets.

@idserda
Last active November 12, 2019 09:12
Show Gist options
  • Save idserda/33d20b0658c5aedf1a1dc54614962f5b to your computer and use it in GitHub Desktop.
Save idserda/33d20b0658c5aedf1a1dc54614962f5b to your computer and use it in GitHub Desktop.
Show next Rova garbage pick up in openHAB

.items

String      ContainerMorgen          {http="<[rova:300000:JS(rova.js)]"}

.sitemap

Text item=ContainerMorgen icon="garbage" label="Container morgen [MAP(rova.map):%s]" visibility=[ContainerMorgen!=null]

http.cfg

rova.url=https://www.rova.nl/api/TrashCalendar/GetCalendarItems?portal=inwoners{Cookie=RovaLc_inwoners={"Id":150000,"ZipCode":"<postal code>","HouseNumber":"<house number>","HouseAddition":"","Municipality":null,"Province":null,"Firstname":null,"Lastname":null,"UserAgent":"","School":null,"Street":null,"Country":null,"Portal":null,"AreaLevel":null,"City":null,"Ip":null}}
rova.updateInterval=43200000

transform/rova.js

(function(input) {
    //var input = "[{\"GarbageTypeCode\":\"REST\",\"GarbageType\":\"Restafval\",\"Date\":\"2019-10-24T00:00:00\",\"Regular\":true},{\"GarbageTypeCode\":\"PLASTICPLUS\",\"GarbageType\":\"PMD\",\"Date\":\"2019-10-25T00:00:00\",\"Regular\":true},{\"GarbageTypeCode\":\"GFT\",\"GarbageType\":\"GFT\",\"Date\":\"2019-10-29T00:00:00\",\"Regular\":true}]";

    var json = JSON.parse(input);
    
    var today = new Date();
    var tomorrow = new Date();
    tomorrow.setDate(today.getDate()+1);
    tomorrow.setHours(0,0,0,0)
    
    var tsTomorrow = tomorrow.getTime() - tomorrow.getTimezoneOffset()*60*1000;

    var ret = null;
    
    json.forEach(function (item, index) {
        var d = Date.parse(item.Date);
        if (d == tsTomorrow) {
	    ret = item.GarbageType;
        }
    });

    return ret;
})(input)

transform/rova.map

Restafval=Grijs
PMD=Oranje
GFT=Groen
null=Geen
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment