Ochsner Warmtepomp – Data opslaan met PHP (CSV)
Dit voorbeeld laat zien hoe je de CSV bestanden van de Ochsner warmtepomp web2com interface download met PHP met gebruik van cURL.
Dit is getest met een Ochsner warmtepomp versie: Site: 2.08 / Device: 2.07
Ik begin meestal met het maken van een PHP “instellingen” bestandje die we in elk PHP script kunnen aanroepen, zodat als er iets wijzigd…bijvoobeeld de warmtepomp gegevens, je dit niet in alle bestanden hoeft te wijzigen.
1) Maak een bestand aan genaamd instellingen.php met deze inhoud:
1 2 3 4 5 6 7 |
<?php // Warmtepomp instellingen $warmtepomp_adres = 'http of ip'; $warmtepomp_poort = '8000'; $warmtepomp_login_naam = ''; $warmtepomp_login_wachtwoord = ''; ?> |
Wijzig de variabelen voor je eigen situatie en sla het bestand op.
2) Nu kunnen we een PHP bestand maken dat een database opbouwd, maak een bestand aan genaamd warmtepomp.php met deze inhoud.
Ps. ik heb de opmerkingen in de code gezet, zodat je kan zien wat elk stukje precies doet.
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
<?php // ------------------------------------------------------------------------------ // Dit is een script voor het downloaden van de opgeslagen gegevens en waarden in // CSV formaat van een Ochsner warmtepomp via de web2com interface naar een folder. // Daarna kunnen de gegevens opgeslagen worden in een MySQL database met: // 1) Via een HTTP URL (webbrowser) // 1) De gewenste datum moet opgegeven worden met: // 1) datum=vandaag // 2) datum=gisteren // 3) datum=yyyy-mm-dd // Voorbeeld: http://website.com/warmtepomp.php?datum=vandaag // 2) Om op te slaan naar de MySQL database met het commando: opslag=database. // Voorbeeld: http://website.com/warmtepomp.php?datum=vandaag&opslag=database // 2) Via de commandolijn // 1) De gewenste datum moet opgegeven worden met: // 1) vandaag // 2) gisteren // 3) yyyy-mm-dd // Voorbeeld: php pad/naar/warmtepomp.php vandaag // 2) Om op te slaan naar de MySQL database met het commando: database. // Voorbeeld: php pad/naar/warmtepomp.php vandaag database // // Om het padnaam voor de cron weer te geven in een browser gebruik // 'warmtepomp.php?cron=pad' // // Ochsner warmtepomp web2com versie: Site: 2.08 / Device: 2.07 // 2014-12-17 door Sebastiaan Ebeltjes. // ------------------------------------------------------------------------------ // Verander het pad naar de folder waar dit script in draait, doe je dit niet dan pakt // bijvoorbeeld de synology NAS '/volume1/homes/admin/' om bestanden in aan te maken. chdir(dirname(__FILE__)); // Inladen van de instellingen. include 'instellingen.php'; // Lokale instellingen. $folder_naam = "warmtepomp"; // Kijk of er een specifieke datum is opgegeven via de URL of commandolijn. // Om de juiste variabelen te achterhalen moeten we eerst vaststellen of het // script gestart is via de browser of commandolijn. // // Geef het absolute pad weer met cron=pad // PHP_SAPI == "cli", wanneer gestart via de commandline zelf. // PHP_SAPI == "cgi-fcgi", wanneer het script gestart wordt via een cronjob. if (PHP_SAPI == "cli" OR PHP_SAPI == "cgi-fcgi") { // Dit PHP script is gestart via de commandolijn. if ($argv[1] == "") { // Geen datum opgegeven. echo "De datum is niet opgegeven! (gebruik: vandaag / gisteren / yyyy-mm-dd)"; exit; } elseif ($argv[1] == "vandaag") { // Gebruik de datum van vandaag. $datum_iso = date("Y") . '-' . date("m") . '-' . date("d"); } elseif ($argv[1] == "gisteren") { // De datum van gisteren. $unix_time = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $dag_terug = strtotime('-1 day', $unix_time); $datum_iso = date('Y-m-d', $dag_terug); } else { // De datum die is opgegeven. $datum_iso = $argv[1]; } } else { // Dit PHP script is gestart via de HTTP URL (browser). // laat padnaam zien van het script (voor cron job. if ($_GET['cron'] == "pad") { echo "Het script pad voor de CRON job:<br><br>"; echo "php " . __FILE__; exit; } if ($_GET['datum'] == "") { // er is geen datum opgegeven echo "De datum is niet opgegeven!<br><br>"; echo "De gewenste datum moet opgegeven worden met:<br>"; echo "1) datum=vandaag<br>"; echo "2) datum=gisteren<br>"; echo "3) datum=yyyy-mm-dd<br>"; exit; } elseif ($_GET['datum'] == "vandaag") { // Gebruik de datum van vandaag. $datum_iso = date("Y") . '-' . date("m") . '-' . date("d"); } elseif ($_GET['datum'] == "gisteren") { // De datum van gisteren. $unix_time = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $dag_terug = strtotime('-1 day', $unix_time); $datum_iso = date('Y-m-d', $dag_terug); } else { // De datum die is opgegeven. $datum_iso = $_GET['datum']; } } // Bestand downloaden met PHP cURL. echo "* Connectie maken met de warmtepomp...<br>"; echo "- download gegevens van datum ' " . $datum_iso . " '..."; // cURL initialiseren. $curlcon = curl_init(); // cURL opties instellen. curl_setopt($curlcon, CURLOPT_URL, 'http://' . $warmtepomp_adres . ':' . $warmtepomp_poort . '/' . $datum_iso . '.csv?file=mmc:/datalog/' . $datum_iso . '.csv&MIME=text/csv'); curl_setopt($curlcon, CURLOPT_RETURNTRANSFER, true); curl_setopt($curlcon, CURLAUTH_BASIC, true); curl_setopt($curlcon, CURLOPT_USERPWD, $warmtepomp_login_naam . ':' . $warmtepomp_login_wachtwoord); // De inhoud van de "webpagina" in een variabele stoppen. $inhoud = curl_exec($curlcon); // Kijk of de verbinding goed gelukt is (HTTP 200) // $httpcode = 200 > verbinding is succesvol. // $httpcode = 404 > pagina niet gevonden. // etc. $httpcode = curl_getinfo($curlcon, CURLINFO_HTTP_CODE); if ($httpcode == "200") { echo "succes!<br>"; } else { echo "fout!, HTTP code: " . $httpcode . "<br>"; // Eindig het script. exit; } // Sluit de CURL verbinding. curl_close($curlcon); echo "- maak een folder aan genaamd ' warmtepomp '..."; // Maak een folder aan "warmtepomp" als de nog niet bestaat. // LET OP!: Je hebt wel de juiste rechten nodig om een folder aan te maken vanuit PHP, // gebruik CHMOD 0777 op de webfolder of maak de folder "warmtepomp" zelf aan. // Controleer of de folder "warmtepomp" bestaat. if (file_exists("warmtepomp")) { // De folder bestaat, we hoeven niets te doen! echo "de folder is aanwezig!<br>"; } else { // De folder bestaat niet, we maken de folder aan. if (!mkdir("warmtepomp", 0777, true)) { // de folder kan niet gemaakt worden die("fout!, kan de folder ' warmtepomp ' niet maken...<br>"); // Eindig het script. exit; } else { echo "succes!<br>"; } } // Gegevens opslaan in een bestand. echo "- sla de gegevens op in bestand ' warmtepomp\\" . $datum_iso . ".csv '..."; // Open een bestand voor het wegschrijven van de gegevens (bestand word overschreven). $bestand = fopen("warmtepomp/" . $datum_iso . ".csv", "w"); if (fwrite($bestand, $inhoud) === FALSE) { echo "fout!, het bestand kan niet aangemaakt worden!<br>"; } else { echo "succes!<br>"; } // Sluit de connectie met het bestand. fclose($bestand); |
Als je nu het script start vanuit je browser, met bijvoorbeeld: http://[IP ADRES]/warmtepomp.php?datum=vandaag voor de gegevens van vandaag, datum=gisteren voor de gegevens van gisteren, of http://[IP ADRES]/warmtepomp.php?datum=YYYY-MM-DD voor een specifieke datum, dan zou het resultaat er zo uit moeten zien:
1 2 3 4 5 6 7 |
* Connectie maken met de warmtepomp... - download gegevens van datum ' 2014-12-02 '...succes! - maak een folder aan genaamd ' warmtepomp '...succes! - sla de gegevens op in bestand ' warmtepomp\2014-12-02.csv '...succes! -- Einde! -- |
De download is nu compleet, het bestandje is weggeschreven.
[#/scripts/ochsner_warmtepomp_csv” ]