Afgelopen dagen bezig geweest met een nieuwe app voor m’n Pebble: om de domotica te bedienen. Je kunt je scenes en switches bedienen, en ik wil in de toekomst ook nog de temperatuur erin stoppen.
Category Archives: Software
Boodschappen ophalen (en toevoegen) bij de Appie Heijn
Druk bezig met een bepaald project wil ik ook graag boodschappen bijhouden die gehaald moeten worden. Nu heeft de Albert Heijn al een app waarin je boodschappen kunt toevoegen. Dit werkt ook mooi via de site van Albert Heijn. Onderstaand een script welke ik heb geschreven om de boodschappen op te halen (in JSON) en eventueel een boodschap toe te voegen. Je moet hierin nog wel even je eigen cookie toevoegen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<? $cookie = '##hier je cookie##'; if ($_GET["method"] == "add" && !empty($_POST["boodschap"])) { $url = 'http://www.ah.nl/service/rest/shoppinglists/0/items'; $data_string = '{"quantity":1,"type":"UNSPECIFIED","label":"PROCESSING_UNSPECIFIED","item":{"description":"'.$_POST["boodschap"].'"}}'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: " . $cookie, 'Content-Type:application/json', 'Content-Length: ' . strlen($data_string))); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, array("customer"=>$data_string)); curl_setopt($ch, CURLOPT_HEADER, true); $output = curl_exec($ch); // close curl resource to free up system resources curl_close($ch); } $url = 'http://www.ah.nl/service/rest/delegate?url=/mijnlijst'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: " . $cookie)); $output = curl_exec($ch); // close curl resource to free up system resources curl_close($ch); header("content-type: application/json"); echo $output; ?> |
Exchange-kalender uitlezen
Voor een bepaald project ben ik bezig met iets waarvoor ik onze agenda’s moet uitlezen. We houden beide onze agenda’s bij in Exchange en helaas kun je hier niet een kant-en-klaar ICal-bestand uit halen. Gelukkig kun je wel communiceren met WebDAV, echter is dat best een heibel werkje.
Het script hieronder haalt van ons beide de agenda op en retourneert een JSON-array met onze afspraken. Ook zet hij er bij van wie welke afspraak is, of of hij van ons allebei is.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
<?php function getAppointments($username, $password, $url) { $request = '<?xml version="1.0"?>'; $request.= '<d:searchrequest xmlns:d="DAV:" xmlns:cal="urn:schemas:calendar:">'; $request.= '<d:sql> SELECT "DAV:href", "urn:schemas:calendar:dtstart", "urn:schemas:calendar:dtend", "urn:schemas:httpmail:subject" FROM Scope(\'SHALLOW TRAVERSAL OF "'.$url.'" \') WHERE "DAV:contentclass" = \'urn:content-classes:appointment\' AND "urn:schemas:calendar:dtstart" >= CAST("'.date("c").'" AS "dateTime.tz") ORDER BY "urn:schemas:calendar:dtstart" ASC</d:sql>'; $request.= '</d:searchrequest>'; $context = stream_context_create(array( 'http' => array( 'method' => 'SEARCH', 'header' => array("Content-type: text/xml", "Depth: 1,noroot", "Authorization: Basic " . base64_encode($username . ":" . $password)), 'content' => $request, ) )); $data = str_replace(":", "_", file_get_contents($url, false, $context)); return $data; } $appointments = array(); for ($i = 0 ; $i < 2 ; $i++) { switch ($i) { case 0: $url = 'https://server/exchange/erik/Calender/'; $username = "erik"; $password = ""; break; case 1: $url = 'https://server/exchange/marloes/Calender/'; $username = "marloes"; $password = ""; break; } $xml = simplexml_load_string(getAppointments($username, $password, $url)); foreach ($xml->a_response as $waarde) { $dt = str_replace("_", ":", $waarde->a_propstat->a_prop->d_dtstart); $dt = strtotime($dt); if (array_key_exists($dt, $appointments)) { if ($appointments[$dt]["title"] == (string)$waarde->a_propstat->a_prop->e_subject) { $appointments[$dt]["both"] = true; } else { $dt++; } } $appointments[$dt]["title"] = (string)$waarde->a_propstat->a_prop->e_subject; $appointments[$dt]["username"] = $username; } } ksort($appointments, SORT_NUMERIC); foreach ($appointments as $time => $value) { $appt_json[] = array("date" => date('c', $time), "title" => $value["title"], "username" => ($value["both"] ? "both" : $value["username"])); } echo json_encode($appt_json); ?> |
LGRemote
Bestuur je LG-tv vanaf je horloge met je Pebble-watch. Zie hier.
E-ThermoPebble
Regel op je Pebble-horloge de temperatuur van je E-Thermostaat van Essent. Zie hier.
BluePower
Handig (oud) tooltje voor Windows Mobile. Zet de bluetooth aan wanneer stroom is aangesloten en uit wanneer stroom eraf gaat. Handig voor in de auto. Zie hier.