https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl
Het zou "handiger" zijn als we dat in de Netduino programmeren, maar ik verwacht dat JoopC dat -zéker in de Netduino V1- niet in gaat bouwen.
Klinkt goed en ben zeer benieuwd naar de resultaten.
Ben zelf teruggekomen van naar MinderGas loggen, daar ik liever niet de data bij een externe partij neerzet.
Niet dat de data op mijn Rpi veiliger staat, maar heb de data liever in mijn eigen servertje staan.
Binnenkort kijken of ik KNMI data naar binnen kan trekken en dan met Wind en Temperatuur data het gasverbruik begrijpelijk inzichtelijk kan maken.
https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl
http://www.knmi.nl/klimatologie/daggegevens/download.html
Ik heb op mijn servertje een script dat de voor mij relevante zip ophaalt en uitpakt.
ieeeepppppp :P
Je kan ook allebei doen. Zorg je in ieder geval voor vergelijkingsmateriaalFreemann schreef op maandag 11 februari 2013 @ 12:18:
Ben zelf teruggekomen van naar MinderGas loggen, daar ik liever niet de data bij een externe partij neerzet.
Niet dat de data op mijn Rpi veiliger staat, maar heb de data liever in mijn eigen servertje staan.
Binnenkort kijken of ik KNMI data naar binnen kan trekken en dan met Wind en Temperatuur data het gasverbruik begrijpelijk inzichtelijk kan maken.
A'dam PVOutput
Waarom zo "omslachtig"?VROEM! schreef op maandag 11 februari 2013 @ 12:33:
KNMI data is gewoon elke dag als zipje op te halen.
http://www.knmi.nl/klimatologie/daggegevens/download.html
Ik heb op mijn servertje een script dat de voor mij relevante zip ophaalt en uitpakt.
KNMI heeft een "api" die gewoon op jouw antwoord kan reageren.
Curl naar de Api en de data opvangen, uitelkaar trekken en opslaan
https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl
Heb een .sh file aangemaakt en via cronjob ingepland maar ik zie mijn meterstanden niet verschijnen bij mindergas.nl vandaar mijn vraag.
LG-HM051MR-U44 | Daalderop DUO 50l | 1500 WP Zuid | gasloos '23
Bij mij werkt het gewoon, cronjob probleem? Die pagina is inderdaad niet bereikbaar.jvanderkroon schreef op vrijdag 27 september 2013 @ 12:25:
Het lijkt er op dat mindergas.nl de pagina https://www.mindergas.nl/mobile_app/gas_meter_readings uit de lucht heeft gehaald. Ik krijg in ieder geval 404 te zien. Of is deze pagina alleen via een curl met juiste token beschikbaar?
Heb een .sh file aangemaakt en via cronjob ingepland maar ik zie mijn meterstanden niet verschijnen bij mindergas.nl vandaar mijn vraag.
A'dam PVOutput
Even de curl aangepast zodat deze de output toont en daar ie ik dezelfde melding als die VR_Bosch kreeg.ericplan schreef op vrijdag 27 september 2013 @ 12:33:
[...]
Bij mij werkt het gewoon, cronjob probleem? Die pagina is inderdaad niet bereikbaar.
* Connection #0 to host www.mindergas.nl left intact
ä"error":"Ongeldig authenticiteit token."¨* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
Mailjte naar mindergas.nl gestuurd. Misschien is mijn token niet goed.
---------
Reactie terug van mindergas (super snel)
Dit komt omdat je op de mobile_app URL zit. Zou je onderstaande URL kunnen gebruiken:
curl -v -H "Content-Type:application/json" -d '{"date":"<YYYY-MM-DD>","reading_l":"<meterstand in liters>"}' http://mindergas.nl/you_l...adings?auth_token=<token>
--------
Gelijk even geprobeerd en dan werkt het prima met onderstaande code. (bedankt ericplan voor grootste deel code)
1
2
3
4
5
6
7
8
9
| #!/bin/bash #putting the token in a variable token='hier de token' #set the date for mindergas.nl fullDate=$(date +"%Y-%m-%d") #get todays gasCounter by curl-ing the Youless gasCounter=`curl -s http://192.168.1.8/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .` #send gasCounter to mindergas with the current date and token curl -k -H "Content-Type:application/json" -d '{"date":"'$fullDate'","reading_l":"'$gasCounter'"}' http://mindergas.nl/you_less/gas_meter_readings?auth_token=$token > /dev/null 2>&1 |
[ Voor 47% gewijzigd door jvanderkroon op 27-09-2013 13:30 ]
LG-HM051MR-U44 | Daalderop DUO 50l | 1500 WP Zuid | gasloos '23
Voor de liefhebbers hieronder mijn script. Dit script draai ik elke avond op mijn OpenWRT gebaseerde router.
De gebruikte json parser is eventueel o.a. hier te vinden.
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
| #!/bin/sh . /usr/share/libubox/jshn.sh WGET='/usr/bin/wget --no-check-certificate -q -O /tmp/toon.out ' LOGGER='logger -t TOON' TOON_REFERER='https://toonopafstand.eneco.nl/index.html' TOON_USERAGENT='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36' TOONURL_LOGIN='https://toonopafstand.eneco.nl/toonMobileBackendWeb/client/login' TOONURL_START='https://toonopafstand.eneco.nl/toonMobileBackendWeb/client/auth/start' TOONURL_STATE='https://toonopafstand.eneco.nl/toonMobileBackendWeb/client/auth/retrieveToonState' TOONURL_LOGOUT='https://toonopafstand.eneco.nl/toonMobileBackendWeb/client/auth/logout' TOONLOGIN_USERNAME='JE-TOON-MAIL-ADRES' #url encoded voorbeeld: mail%40example.com TOONLOGIN_PASSWORD='JE-TOON-WACHTWOORD' MINDERGAS_TOKEN='JE-MINDERGAS-TOKEN' #login loginResponse=`$WGET "$TOONURL_LOGIN" --post-data="username=$TOONLOGIN_USERNAME&password=$TOONLOGIN_PASSWORD" --referer="$TOON_REFERER" --user-agent="$TOON_USERAGENT"` json_load "`cat /tmp/toon.out`" json_get_var clientId clientId json_get_var clientIdChecksum clientIdChecksum json_select agreements json_select 1 json_get_var agreementId agreementId json_get_var agreementIdChecksum agreementIdChecksum #start random="`cat /proc/sys/kernel/random/uuid`" underscore="`date +%s`" startResponse=`$WGET "$TOONURL_START?clientId=$clientId&clientIdChecksum=$clientIdChecksum&agreementId=$agreementId&agreementIdChecksum=$agreementIdChecksum&random=$random&_=$underscore" --referer="$TOON_REFERER" --user-agent="$TOON_USERAGENT"` #state er=1; while [[ $er != 0 ]] do json_cleanup random="`cat /proc/sys/kernel/random/uuid`" underscore="`date +%s`" stateResponse=`$WGET "$TOONURL_STATE?clientId=$clientId&clientIdChecksum=$clientIdChecksum&random=$random&_=$underscore" --referer="$TOON_REFERER" --user-agent="$TOON_USERAGENT"` json_load "`sed -e 's/\.//g' /tmp/toon.out`" json_select gasUsage > /dev/null er=$? if [[ $er != 0 ]] then sleep 3 fi done json_get_var meterReading meterReading $LOGGER GAS: $meterReading json_init json_add_string "date" "`date +"%Y-%m-%d"`" json_add_string "reading_l" "$meterReading" $WGET --header="Content-Type: application/json" --post-data="`json_dump`" http://mindergas.nl/you_less/gas_meter_readings?auth_token=$MINDERGAS_TOKEN #logout random="`cat /proc/sys/kernel/random/uuid`" underscore="`date +%s`" logoutResponse=`$WGET "$TOONURL_LOGOUT?clientId=$clientId&clientIdChecksum=$clientIdChecksum&random=$random&_=$underscore" --referer="$TOON_REFERER" --user-agent="$TOON_USERAGENT"` rm /tmp/toon.out json_cleanup |
[ Voor 0% gewijzigd door aritmeester op 25-11-2013 12:57 . Reden: bugfix in script ]
Heb even contact gehad met de maker van de site mindergas en die gaf het volgende aan:
Nieuwe code die ik gebruik (met parameter reading ipv readling_l):Er is eind vorig jaar een storing geweest met de API door een software upgrade.
Dit is opgelost, maar de API is iets stricter geworden.
De variabele reading_l staat voor "meterstand in liters", dus niet "meterstand in m3"
Je kan het op 2 manieren oplossen:
de waarde meegeven aan reading_l (zonder punt), of je kan de parameter "reading" ipv "reading_l" gebruiken als parameter. Dan is een waarde met een punt wel ok (met punt, geen komma).
1
2
3
4
5
6
7
8
9
| #!/bin/bash #putting the token in a variable token='hier de token' #set the date for mindergas.nl fullDate=$(date +"%Y-%m-%d") #get todays gasCounter by curl-ing the Youless gasCounter=`curl -s http://192.168.1.8/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .` #send gasCounter to mindergas with the current date and token curl -k -H "Content-Type:application/json" -d '{"date":"'$fullDate'","reading":"'$gasCounter'"}' http://mindergas.nl/you_less/gas_meter_readings?auth_token=$token > /dev/null 2>&1 |
PV 4.8 kWp Zuid 48°| 2 kWp Oost 25° | Batt 10 kWh (2x MT FW153 CT003 FW117, 2 fases, NOM | ModBus/NodeRed (optie) | 42 kWh i3 BEV | 7 kWh Outlander PHEV | Proxmox + HASS | Alfen Eve Single Pro | WPB 270l v4 AquaMQTT ESP | MHI (2x) + ME L/L airco's
A'dam PVOutput
Een token bij mindergas, account bij pvoutput.org
Een arduino met shield
Solarmeter erin.
En je kunt je gas en enz enz
Automatisch uploaden....naar mindergas en naar pvo output..
Log zo al mijn data.
Water, gas, verbruik stroom opbrengst stroom, winddelen, temperatuur.
Eea zichtbaar via exosite en verschillende apps...
http://pvoutput.org/intraday.jsp?id=15321&sid=19520
https://portals.exosite.com/views/3097788885/3965427468
zonneboiler, pelletkachel, 36 panels, Atlantic Wpb, pana 5 Kw H, Heishamon, Domoticz, Grafana, Solarmeters, PVO: https://pvoutput.org/list.jsp?id=15321&sid=19520
Noord-Oost-Zuid-West 11640Wp Totaal Live, Netduino advanced pv logging
zonneboiler, pelletkachel, 36 panels, Atlantic Wpb, pana 5 Kw H, Heishamon, Domoticz, Grafana, Solarmeters, PVO: https://pvoutput.org/list.jsp?id=15321&sid=19520
Je hebt altijd een key nodig. Die moet je aanvragen bij Mindergas. Je moet op je device of op je website een cronjob kunnen aanmaken, zodat het script eens per dag wordt uitgevoerd.
Optie 1
Youless <- bashscript -> router -> Mindergas
Zou uitgevoerd kunnen worden door NAS of router met linuxfirmware (bv Fritz!box met Freetz) Voordeel is dat de Youless niet van buitenaf bereikbaar hoeft te zijn.
Optie 2
Youless <- router <- PHP-script op eigen website -> Mindergas
Je moet dan een open poort op je router instellen, zodat het script bij je Youless kan komen.
Wie heeft een werkend PHP-script beschikbaar voor deze laatste optie?
[ Voor 7% gewijzigd door ericplan op 22-01-2014 20:41 ]
A'dam PVOutput
Via crontab draait dit script elke nacht net na middernacht. .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| import json import urllib2 import urllib # Specify the url url = 'https://www.mindergas.nl/api/gas_meter_readings' # Prepare the data query_args = { 'date':'2014-06-28', 'reading':'4017.012' } # Prepare the request request = urllib2.Request(url) # Add your headers request.add_header('Content-Type', 'application/json') request.add_header('AUTH-TOKEN', 'hier je authorisatie code van mindergas') # Prepare the data in JSON format data = json.dumps(query_args) # send the HTML Post request response = urllib2.urlopen(request,data) |
[ Voor 5% gewijzigd door s441558 op 30-06-2014 22:28 ]
Nefit EnviLine IDU Monoblock E 7 E-S, Boiler 200 L, Buffervat 50L. BQQKees
http://mindergas.nl/faq
[ Voor 32% gewijzigd door ericplan op 29-06-2014 22:32 . Reden: Faq ]
A'dam PVOutput
[ Voor 15% gewijzigd door s441558 op 30-06-2014 22:29 ]
Nefit EnviLine IDU Monoblock E 7 E-S, Boiler 200 L, Buffervat 50L. BQQKees
Werkt dit script nog steeds? Lijkt me wel handig om te combineren met de Arduino setting die ik gemaakt heb (zie signature).Freemann schreef op donderdag 24 januari 2013 @ 16:07:
[...]
Dit zal zo goed als zeker wel werken:
PHP:
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 <?php // Gasmeterstand uploaden naar mindergas.nl $gas="3151"; $datum="2013-01-22"; $data = array("date" => "$datum", "reading" => "$gas"); $data_string = json_encode($data); // // plaats hieronder de token van Mindergas tussen 'quotes'; $minderGasToken = 'TokenVanMinderGasNL'; // // php con. string en var. $curlAuthToken = 'AUTH-TOKEN:'.$minderGasToken; $ch = curl_init('https://www.mindergas.nl/mobile_app/gas_meter_readings'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Accept:application/json',$curlAuthToken)); $result = curl_exec($ch); curl_close($ch); echo $result; ?>
De HTTPHEADER verwacht een array en denk dat die moeilijk doet met concatenation van string en var.
Als je dat buiten de array doet, dan zal hij dat zo goed als zeker slikken.
Edit (1sept2014): Volgens Mr-Leo werkt het nog

Onderstaand script werkt:
mindergas.php
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
| <?php error_reporting(E_ALL); $MyUsername = "p1logger"; // enter your username for mysql $MyPassword = "p1logger"; // enter your password for mysql $MyHostname = "localhost"; // this is usually "localhost" unless your database resides on a different server $dbh = mysql_pconnect($MyHostname , $MyUsername, $MyPassword); $selected = mysql_select_db("p1",$dbh); $result = mysql_query("SELECT `gas` FROM `readings` WHERE DATE(time) = CURRENT_DATE ORDER BY `readings`.`gas` DESC LIMIT 1"); //query $array = mysql_fetch_row($result); echo $array[0]; // Execute SQL statement mysql_query($SQL); mysql_close($dbh) ; // Gasmeterstand uploaden naar mindergas.nl $gas = $array[0]; $datum = date("Y-m-d"); $data = array("date" => "$datum", "reading" => "$gas"); $data_string = json_encode($data); // // plaats hieronder de token van Mindergas tussen 'quotes'; $minderGasToken = 'HIER_JOUW_TOKEN'; // // php con. string en var. $curlAuthToken = 'AUTH-TOKEN:'.$minderGasToken; $ch = curl_init('https://www.mindergas.nl/api/gas_meter_readings'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Accept:application/json',$curlAuthToken)); $result = curl_exec($ch); curl_close($ch); echo $result; ?> |
Het haalt de data uit een MySQL tabel die ik met een Arduino vul vanuit de P1 poort van m'n slimme meter
Op m'n Synology laat ik dit bestand elke avond om 23:59 draaien via een cronjob die
1
| curl "http://192.168.1.123/www/mindergas.php" |
Het is belangrijk dat je het 's avonds doet, Mindergas ziet de standen die je stuurt als de eindstand van die dag.
De API token kun je genereren via https://www.mindergas.nl/member/api (als je bent ingelogd).
[ Voor 5% gewijzigd door ThinkPad op 02-09-2014 07:19 ]
Ik heb een hele tijd m'n slimme meter uitgelezen met een Arduino: ThinkPad's TweakBlog: Uitlezen van de slimme meter P1-poort met een Arduino en waarden opslaan in MySQL-database
Maar ik gebruik ook al weer een tijdje een Raspberry Pi met Domoticz erop. Daarmee lees ik ook de slimme meter uit (via RJ11 splitter zowel Arduino als Raspberry aan de meter hangen). Nu heeft [Verwijderde gebruiker] een Python scriptje gemaakt zodat je de meterstand uit Domoticz kunt halen en kunt uploaden naar Mindergas.nl. De Arduino is in mijn situatie dus niet meer nodig. De meterstand wordt nu automatisch elke nacht naar www.mindergas.nl geupload
Je vind het script en uitleg hier: http://tweaken.blogspot.n...den-naar-mindergasnl.html en hier: https://www.domoticz.com/wiki/Mindergas.nl
[ Voor 206% gewijzigd door ThinkPad op 18-08-2017 15:13 ]
ik heb de gegevens van Hangover_ohoo overgenomen en het e.e.a. ivm bug-reports toegevoegd met een log-file.
onderstaande werkt 1-op-1, waarbij <TOKEN> wel even vervangen moet worden door de TOKEN die op te vragen is via de website van mindergas.nl
Maak ook even een log-file aan, zodat het loggen ook werkt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #!/bin/sh #set the date for mindergas.nl fullDate=$(date +"%Y-%m-%d") #log start LOGFILE=/volume1/public/log_mindergas.log echo "$(date "+%d-%m-%Y : %T") - Start cURL" >> $LOGFILE 2>&1 #get todays gasCounter by curl-ing the Youless gasCounter=`curl -s http://192.168.2.14/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .` #send gasCounter to mindergas with the current date and token echo "Meterstand: $gasCounter" >> $LOGFILE 2>&1 STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:<TOKEN>" -d '{"date":"'$fullDate'", "reading": "'$gasCounter'" }' https://www.mindergas.nl/api/gas_meter_readings) if [ "$STATUS" = " 201" ] then echo "Meterstand geupload naar mindergas.nl" >> $LOGFILE 2>&1 elif [ "$STATUS" = " 422" ] then echo "ERROR: Meterstand vandaag reeds ingevoerd, HTTP-status: $STATUS " >> $LOGFILE 2>&1 else echo "ERROR: HTTP-code: $STATUS" >> $LOGFILE 2>&1 fi echo "---------------------------------------------" >> $LOGFILE 2>&1 |
output in log-file is dan bij dubbele invoer:
1
2
3
4
| 27-01-2015 : 09:47:04 - Start cURL Meterstand: 2853.260 ERROR: Meterstand vandaag reeds ingevoerd, HTTP-status: 422 --------------------------------------------- |
als er vragen zijn, hoor ik het wel!
[ Voor 7% gewijzigd door Heinemancp op 27-01-2015 10:49 . Reden: log-file toegevoegd ]
Zou het mogelijk zijn om een mail functie toe te voegen die een mailtje stuurt als het niet goed gegaan is?
Ik kom er nog niet uit hoe ik dit toe kan voegen? Heb je een idee?
Alvast bedankt.
A'dam PVOutput
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #!/bin/sh #set the date for mindergas.nl fullDate=$(date +"%Y-%m-%d") #log start LOGFILE=/home/pi/mindergas.log echo "$(date "+%d-%m-%Y : %T") - Start cURL" >> $LOGFILE 2>&1 #get todays gasCounter from first argument gasCounter=$1 #send gasCounter to mindergas with the current date and token echo "Meterstand: $gasCounter" >> $LOGFILE 2>&1 STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:<TOKEN>" -d '{"$ if [ "$STATUS" = " 201" ] then echo "Meterstand geupload naar mindergas.nl" >> $LOGFILE 2>&1 elif [ "$STATUS" = " 422" ] then echo "ERROR: Meterstand vandaag reeds ingevoerd, HTTP-status: $STATUS " >> $LOGFILE 2>&1 else echo "ERROR: HTTP-code: $STATUS" >> $LOGFILE 2>&1 fi echo "---------------------------------------------" >> $LOGFILE 2>&1 |
en even voor de volledigheid mijn pimatic-rule:
1
| execute "/home/pi/uploadgas.sh $tellergas.meterstand > /dev/null 2>&1" |
[ Voor 6% gewijzigd door Thedr op 22-11-2015 00:20 ]
Ik wil de gasmeter loggen naar mindergas mbv een LS110 (heb al een token van mindergas.nl), ik kan echter op de youless site geen firmware vinden hiervoor.
Als ik echter de linkjes volg in het Youless topic kom ik daar de volgende tegen:
youless-flash-1.2.0-G4.exe
Is dit de juiste (en laatste beschikbare) versie om de LS110 om te zetten dat deze de gasmeter kan loggen?
1.20-G4 is de juiste.Chris12 schreef op woensdag 16 augustus 2017 @ 09:46:
@YouLess welke versie om MinderGas te loggen heb ik nodig voor de LS110 ?
Heb jij dit script nog?ThinkPadd schreef op dinsdag 20 januari 2015 @ 15:14:
Domoticz + Mindergas.nl
Ik heb een hele tijd m'n slimme meter uitgelezen met een Arduino: ThinkPad's TweakBlog: Uitlezen van de slimme meter P1-poort met een Arduino en waarden opslaan in MySQL-database
Maar ik gebruik ook al weer een tijdje een Raspberry Pi met Domoticz erop. Daarmee lees ik ook de slimme meter uit (via RJ11 splitter zowel Arduino als Raspberry aan de meter hangen). Nu heeft [Verwijderde gebruiker] een Python scriptje gemaakt zodat je de meterstand uit Domoticz kunt halen en kunt uploaden naar Mindergas.nl. De Arduino is in mijn situatie dus niet meer nodig. De meterstand wordt nu automatisch elke nacht naar www.mindergas.nl geupload
Je vind het script en uitleg hier: http://tweaken.blogspot.n...den-naar-mindergasnl.html
helaas werkt de link naar blogspot niet meer
edit: hmm, volgens mij heb ik hem al via google...

[ Voor 3% gewijzigd door Speedfightserv op 18-08-2017 15:05 ]
30 x Trina 390wp Op SE en Solis. | MHI 3,5kw
Zou deze moeten zijn: https://www.domoticz.com/wiki/Mindergas.nlSpeedfightserv schreef op vrijdag 18 augustus 2017 @ 15:01:
[...]
Heb jij dit script nog?(die van domoticz naar mindergas)
helaas werkt de link naar blogspot niet meer
edit: hmm, volgens mij heb ik hem al via google...
Uiteraard aangepast met mn eigen youless IP adres en eigen Token.
Ik zie in de log file deze melding: (na handmatig runnen script, deze loopt normaliter om 23:55 dagelijks)
18-08-2017 : 21:48:31 - Start cURL
Meterstand:
ERROR: HTTP-code: 422
Wat inhoud dat er al voor deze dag een meterstand zou zijn ingevoerd.
Check bij mindergas geeft nog geen meterstand voor deze dag.
Wanneer ik het volgende uitvoer: http://<ip adres youless>/a
52635,446 m3
0 l/u
32% (±0%)
*
Deze meterstand is hoger dan de (handmatig ingevoerde) meterstand van gisteren (52 635,416 )
dus die zou ik wel verwachten dan voor deze dag.
het script resultaat via de email:
Taak: MinderGas Upload
Starttijd: Fri, 18 Aug 2017 21:48:31 GMT
Stoptijd: Fri, 18 Aug 2017 21:48:31 GMT
Huidige status: 0
Standaard uitvoer/fout:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* TLSv1.2 (OUT), TLS header, Certificate Status (22):
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [98 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [5662 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [589 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
> POST /api/gas_meter_readings HTTP/1.1
> Host: www.mindergas.nl
> User-Agent: curl/7.51.0
> Accept: */*
> Content-Type:application/json
> AUTH-TOKEN:BhA5xxxxxxxxxx27VEzT
> Content-Length: 37
>
} [37 bytes data]
< HTTP/1.1 422 Unprocessable Entity
< Date: Fri, 18 Aug 2017 19:48:31 GMT
< Server: Apache
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< Cache-Control: no-cache
< X-Request-Id: 6c2a2c87-ff40-4f03-ade1-3a544edacb0f
< X-Runtime: 0.028790
< X-Powered-By: Phusion Passenger 4.0.60
< Status: 422 Unprocessable Entity
< X-Powered-By: PleskLin
< Vary: Accept-Encoding
< Content-Length: 0
< Content-Type: text/html
<
100 37 0 0 100 37 0 286 --:--:-- --:--:-- --:--:-- 289
Meet gegevens van de youless (30min)
Verbruik (l/u)
21:29 0
21:30 0
21:31 0
21:32 0
21:33 0
21:34 0
21:35 0
21:36 0
21:37 0
21:38 0
21:39 0
21:40 0
21:41 0
21:42 0
21:43 0
21:44 0
21:45 0
21:46 6
21:47 0
21:48 0
21:49 0
21:50 0
21:51 0
21:52 0
21:53 0
21:54 0
21:55 0
21:56 0
21:57 0
21:58 0
Wat gaat hier mis?
Wanneer de CV aanstaat, dan doet de Youless het prima.
De puls (glimmende 0 ) wordt gedetecteerd (99% met een zwart bolletje erachter) en ook in de meetgegevens komen meetwaarden te staan.
Om iets over 8:00 de CV aan laten slaan:
Verbruik (l/u)
08:00 0
08:01 0
08:02 306
08:03 312
08:04 306
08:05 300
08:06 300
08:07 312
08:08 312
08:09 300
08:10 306
als ik een fixed waarde (52635.600) invul voor de gascounter, en deze waarde met een 'punt' notatie zet dan gaat de upload Ok. (Status: 201 Created)
STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:BhA5q5xxxxxxxxxxVEzT" -d '{"date":"'$fullDate'", "reading":52635.600 }' https://www.mindergas.nl/api/gas_meter_readings)
wat dus betekend dat het hier ergens verkeerd gaat:
gasCounter=`curl -s http://192.168.1.21/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .`
Echter bovenstaande syntax is abracadabra voor mij.
tr dit doet de , door een . vervangen
Maar de rest kan ik niet volgen.
A'dam PVOutput
Maar het script werkt op mn Synology NAS (linux)
Wanneer ik in putty:
gasCounter=`curl -s http://192.168.1.21/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .`
wordt er niks getoond (ook geen error).
curl -v http://192.168.1.21/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0> GET /a HTTP/1.1
> Host: 192.168.1.21
> User-Agent: curl/7.51.0
> Accept: */*
>
< HTTP/1.0 403 Forbidden
< Content-Type: text/html
<
{ [264 bytes data]
Zo het daar iets mee te maken kunnen hebben?
(edit, even nagezocht)
Mijn script draait op een Friz.box
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #!/bin/bash # Linux versie #20130126 Aanpassing decimalen voor Mindergas, Youless met password #putting the token in a variable token='abcdefgh12345678' #set the date for mindergas.nl fullDate=$(date +"%Y-%m-%d") #get a session cookie from the Youless and store it as cookie.txt curl -c /var/mediapath/script/cookie.txt http://192.168.178.175/L?w=12345abcde #get todays gasCounter by curl-ing the Youless gasCounter=`curl -b /var/mediapath/script/cookie.txt http://192.168.178.175/a |grep m3 | cut -c 1-9 | tr , .` #send gasCounter to mindergas with the current date and token #echo $gasCounter curl -k -H "Content-Type:application/json" -H "Accept:application/json" -H "AUTH-TOKEN:$token" -d '{"date":"'$fullDate'","reading":"'$gasCounter'"}' https://www.mindergas.nl/mobile_app/gas_meter_readings > /dev/null 2>&1 |
Merk op dat de curl-opdracht wel iets simpeler kan.
[ Voor 85% gewijzigd door ericplan op 19-08-2017 14:00 . Reden: script ]
A'dam PVOutput
Ik gebruik nu het script van @Heinemancp
Maar zal het cookie deel van jouw script er eens tussen zetten.
Cookie wordt aangemaakt op de NAS in /volume1/public folder
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
192.168.1.21 FALSE / FALSE 0 tk waarocjd
als ik onderstaande uitvoer in putty:
curl -v /volume1/public/cookie.txt http://192.168.1.21/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .
* <url> malformed
curl: (3) <url> malformed
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0> GET /a HTTP/1.1
> Host: 192.168.1.21
> User-Agent: curl/7.51.0
> Accept: */*
>
< HTTP/1.0 403 Forbidden
< Content-Type: text/html
<
{ [264 bytes data]
100 264 0 264 0 0 32101 0 --:--:-- --:--:-- --:--:-- 37714
Zojuist even getest, en gecontroleerd. de curl functies met toebehoren werken bij mij wel. ik was even aan het zoeken wat al die toevoegen ook al weer deden... paar jaar geleden helaas. Maar goed, bij mij werkt het wel...Chris12 schreef op zaterdag 19 augustus 2017 @ 14:11:
in het script van @Heinemancp wordt er niks met een cookie gedaan in jouw script (@ericplan ) weer wel.
Ik gebruik nu het script van @Heinemancp
Maar zal het cookie deel van jouw script er eens tussen zetten.
Cookie wordt aangemaakt op de NAS in /volume1/public folder
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
192.168.1.21 FALSE / FALSE 0 tk waarocjd
als ik onderstaande uitvoer in putty:
curl -v /volume1/public/cookie.txt http://192.168.1.21/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .
* <url> malformed
curl: (3) <url> malformed
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0> GET /a HTTP/1.1
> Host: 192.168.1.21
> User-Agent: curl/7.51.0
> Accept: */*
>
< HTTP/1.0 403 Forbidden
< Content-Type: text/html
<
{ \[264 bytes data]
100 264 0 264 0 0 32101 0 --:--:-- --:--:-- --:--:-- 37714
Wel zijn de HTML codes kennelijk eindelijk zonder spatie, dus ik heb die nu uit de code gehaald. wordt de log ook beter leesbaar.
Wat de Curl doet is alleen het getal uit de IP/a halen, en niet de rest. Hier zitten een paar gekke dingen in, zo staat er een wisselend aantal getallen (bij jou al meer cijfers voor de komma dan bij mij, maar ook erna). dus hij gaat op zoek naar m3. dan haalt hij wat voor / erachter eraf, maar het kan ook nog gebeuren dat er . en , in staat, die mindergas niet meer snapt. Anyway, dat allemaal zit in de curl. het kan vast ook minder moeilijk
> GET /a HTTP/1.1
> Host: 192.168.1.21
> User-Agent: curl/7.51.0
> Accept: */*
>
< HTTP/1.0 403 Forbidden
< Content-Type: text/html
kan het te maken hebben met HTTP/1.0 en HTTP/1.1 ?
Heb je wel of geen wachtwoord op je Youless?
A'dam PVOutput
heb jij een token al gecontroleerd? Wellicht hier een typefout/ spatie etc?
[ Voor 25% gewijzigd door Heinemancp op 19-08-2017 14:30 ]
@Heinemancp wat bedoel je precies met als ik $gasCounter log ? Hoe kan ik dat doen?
even de code uitzetten na:Chris12 schreef op zaterdag 19 augustus 2017 @ 14:31:
geen password op de Youless.
@Heinemancp wat bedoel je precies met als ik $gasCounter log ? Hoe kan ik dat doen?
echo "Meterstand: $gasCounter" >> $LOGFILE 2>&1
dan krijg je in je logfile alleen de meterstand, gaat dat wel goed? dan weten we dat het niet in het voorgaande stuk zit, en dan zit het dus in het in deze regel:
STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:xxx" -d '{"date":"'$fullDate'", "reading": "'$gasCounter'" }' https://www.mindergas.nl/api/gas_meter_readings)
19-08-2017 : 14:38:10 - Start cURL
Meterstand: 52635.671
ActionDispatch::ParamsParser::ParseError (765: unexpected token at '{"date":2017-08-19, "reading": }'):
actionpack (4.2.8) lib/action_dispatch/middleware/params_parser.rb:53:in `rescue in parse_formatted_parameters'
actionpack (4.2.8) lib/action_dispatch/middleware/params_parser.rb:32:in `parse_formatted_parameters'
actionpack (4.2.8) lib/action_dispatch/middleware/params_parser.rb:23:in `call'
actionpack (4.2.8) lib/action_dispatch/middleware/flash.rb:260:in `call'
rack (1.6.5) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.6.5) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.2.8) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.2.8) lib/active_record/query_cache.rb:36:in `call'
ligt misschien aan die decimalen denk ik, twee is wellicht maximaal?
EDIT: nee zelf gecontroleerd, dat gaat wel.
ik zie in je post twee opvallende dingen:
1) unexpected TOKEN. heb jij die al opnieuw aangevraagd/ gecontroleerd met je ingevulde waarde?
2) na "reading: "is het leeg. staat hier wellicht een typefout in $gasCounter zodat hij geen waarde heeft?
[ Voor 50% gewijzigd door Heinemancp op 19-08-2017 14:48 ]
Chris12 schreef op zaterdag 19 augustus 2017 @ 11:51:
Als ik een fixed waarde (52635.600) invul voor de gascounter, en deze waarde met een 'punt' notatie zet dan gaat de upload Ok. (Status: 201 Created)
STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:BhA5q5xxxxxxxxxxVEzT" -d '{"date":"'$fullDate'", "reading":52635.600 }' https://www.mindergas.nl/api/gas_meter_readings)
ok, dus de gascounter komt niet goed door. heb je daar al naar gekeken? dus de overeenkomst tussen $gascounter bij de curl en de $gascounter bij de upload-functie? dat ze dus exact hetzelfde zijn?Chris12 schreef op zaterdag 19 augustus 2017 @ 14:50:
@Heinemancp ik had al vanmorgen met een fixed waarde erin getest, dit gaat OK. (ook met 3 decimalen, gaat handmatige invoer OK.)
[...]
en moet tussen extra ' staan. dus:
"reading": " '$gasCounter' " (met extra spaties)
wellicht dat niet aanwezig?
[ Voor 12% gewijzigd door Heinemancp op 19-08-2017 15:31 ]
(ook niet in jouw org. script in dit topic, wellicht even editten... en dan ook meteen de HTTP code goed zetten?)
STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:BhA5qxxxxxxxxxxVEzT" -d '{"date":"'$fullDate'", "reading": "'$gasCounter'" }' https://www.mindergas.nl/api/gas_meter_readings)
dit nu aangepast, en script unhashed. Daarna handmatig gestart.
In de logfile staat nu:
19-08-2017 : 15:42:43 - Start cURL
Meterstand: 52635.671
ERROR: HTTP-code: 422
Maar dit kan komen doordat er al voor vandaag een meterstand is (test van eerder vandaag met de vast ingevulde waarde).
Dus heb ik die waarde gewist op de mindergas.nl site, daarna nog een keer script gestart:
19-08-2017 : 15:45:13 - Start cURL
Meterstand: 52635.671
ERROR: HTTP-code: 201
en de waarde verschijnt nu wel op de mindergas.nl site !!
Nog even de spaties voor de HTTP codes weggehaald zoals je al eerder aangaf.
zodat er nu mooi in de logging een leesbare resultaat staat:
19-08-2017 : 15:47:49 - Start cURL
Meterstand: 52635.671
Meterstand uploaded naar mindergas.nl
Dank voor jullie hulp en meedenken....
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
| #!/bin/sh #set the date for mindergas.nl fullDate=$(date +"%Y-%m-%d") #log start LOGFILE=/volume1/public/log_mindergas.log echo "$(date "+%d-%m-%Y : %T") - Start cURL" >> $LOGFILE 2>&1 #get todays gasCounter by curl-ing the Youless gasCounter=`curl -s http://IP/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .` #send gasCounter to mindergas with the current date and token echo "Meterstand: $gasCounter" >> $LOGFILE 2>&1 STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:XXXX" -d '{"date":"'$fullDate'", "reading": "'$gasCounter'" }' https://www.mindergas.nl/api/gas_meter_readings) if [ "$STATUS" = "201" ] then echo "Meterstand geupload naar mindergas.nl" >> $LOGFILE 2>&1 elif [ "$STATUS" = "422" ] then echo "ERROR: Meterstand vandaag reeds ingevoerd, HTTP-status: $STATUS " >> $LOGFILE 2>&1 else echo "ERROR: HTTP-code: $STATUS" >> $LOGFILE 2>&1 fi echo "---------------------------------------------" >> $LOGFILE 2>&1 |
aanpassen voor eigen gebruikt:
- IP
- Token
(met extra spatie tussen de dubbel en single quote)
{"date":"'$fullDate'", "reading": " '$gasCounter' " }'
Dit was uiteindelijk de oplossing.
Mist er niet een $ aan het begin van regel 12? (Edit, hoeft blijkbaar niet in bash)Heinemancp schreef op zaterdag 19 augustus 2017 @ 16:24:
code:
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 #!/bin/sh #set the date for mindergas.nl fullDate=$(date +"%Y-%m-%d") #log start LOGFILE=/volume1/public/log_mindergas.log echo "$(date "+%d-%m-%Y : %T") - Start cURL" >> $LOGFILE 2>&1 #get todays gasCounter by curl-ing the Youless gasCounter=`curl -s http://IP/a |grep m3|sed s/\ m3//|sed s/\,/\./|sed s/^\ // | cut -c 1-9 | tr , .` #send gasCounter to mindergas with the current date and token echo "Meterstand: $gasCounter" >> $LOGFILE 2>&1 STATUS=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:XXXX" -d '{"date":"'$fullDate'", "reading": "'$gasCounter'" }' https://www.mindergas.nl/api/gas_meter_readings) if [ "$STATUS" = "201" ] then echo "Meterstand geupload naar mindergas.nl" >> $LOGFILE 2>&1 elif [ "$STATUS" = "422" ] then echo "ERROR: Meterstand vandaag reeds ingevoerd, HTTP-status: $STATUS " >> $LOGFILE 2>&1 else echo "ERROR: HTTP-code: $STATUS" >> $LOGFILE 2>&1 fi echo "---------------------------------------------" >> $LOGFILE 2>&1
aanpassen voor eigen gebruikt:
- IP
- Token
Verder is het nut van het sed-command me hier niet helemaal duidelijk. In mijn (linux)omgeving kan ik het gewoon weglaten. Meer over sed: http://www.grymoire.com/Unix/Sed.html
A'dam PVOutput
Heb jij deze firmware nog beschikbaar? Op de site van Youless is hij niet meer te downloaden.
www.google.nl
Zie TSMisteRMeesteR schreef op dinsdag 5 september 2017 @ 12:43:
[...]
Heb jij deze firmware nog beschikbaar? Op de site van Youless is hij niet meer te downloaden.
http://got.td-er.nl/Youless/youless-flash-1.2.0-G4.exe
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
| #!/usr/bin/python3 #This script reads the field 'gas' from a YouLess LS120 that reads a P1 smart meter #It then uploads the reading for the gas meter to Mindergas.nl through their API #The script is meant to run after midnight, run it for example at 0:20 import requests import json import datetime mindergas = "http://www.mindergas.nl/api/gas_meter_readings" mindergas_token = 'yourtokenhere' youless_ip = "http://192.168.6.28/e" response = requests.get(youless_ip) gas_usage = response.json()[0]['gas'] print (gas_usage) def post(): yesterday = datetime.date.today () - datetime.timedelta (days=1) data = {'date': yesterday.strftime ("%Y%m%d"), 'reading':gas_usage} headers = {'Content-Type': 'application/json', 'AUTH-TOKEN': mindergas_token} r = requests.post(mindergas, data=json.dumps(data), headers=headers) print (yesterday.strftime ("%Y%m%d")) print (data) print (r) print ('Ready') post() |
Dit script check welke gaswaarden ontbreken en haalt deze van de Youless p1 met pvoutput firmware en upload deze tot aan datum van gisteren.
Met dank aan David La Hei van MinderGas.nl voor het toevoegen van de functie voor het uitvragen van de laatste toegevoegd datum en gasverbruik waarde.
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
| $AUTHTokenMindergas = "AUTH-TOKEN:<Tokenwachtwoord>" $WachtwoordYouLess = "<YouLessWachtwoord>" $ipadres = "<xxx.xxx.xxx.xxx>" Function Get-DateRange { [CmdletBinding()] Param ( [datetime]$Start = (Get-Date), [datetime]$End = (Get-Date) ) ForEach ($Num in (0..((New-TimeSpan -Start $Start -End $End).Days))) { $Start.AddDays($Num).ToString("dd-MM-yy") } } write-host "De upload datums worden bepaald" #haal de laaste meterstand en datum op bij mindergas $argHeaderMindergas = @('-H', 'Content-Type:application/json', '-H', $AUTHTokenMindergas) $LaatsteMindergas = & C:\Windows\System32\curl -s $argHeaderMindergas https://mindergas.nl/api/gas_meter_readings/latest Start-Sleep 2 $LaatstestandMindergas = $(ConvertFrom-Json($LaatsteMindergas)).reading $LaatstedatumMindergas = $(ConvertFrom-Json($LaatsteMindergas)).date #bepaal de datums die nog verwerkt moeten worden. $Gisteren = $((get-date).AddDays(-1)) $NieuwedatumMindergas = $(Get-date($LaatstedatumMindergas)).AddDays(1) $AlleOntbrekendeDagen = Get-DateRange -Start $NieuwedatumMindergas -End $Gisteren #Maak verbinding met de youless met pvoutout firmware $AllArgsYouless = @('-s', '-c', 'cookie.txt', "http://$ipadres/L?w=$WachtwoordYouLess") & C:\Windows\System32\curl $AllArgsYouless Start-Sleep 2 #haal de gasstanden op van alle maanden(youless) van de ontbrekende datums op mindergas. ForEach($datumMindergas in $AlleOntbrekendeDagen){ $maand = $datumMindergas.split("-")[1] $AllArgsyouless = @('-s', '-b', 'cookie.txt', "http://$ipadres/W?m=$($maand)") $DagenVanMaandYouless = & C:\Windows\System32\curl $AllArgsyouless Start-Sleep 2 #Voor alle dagen van die maand in de youless kijk of er een dag ontbreekt op mindergas foreach($regelYouless in $DagenVanMaandYouless){ If ($regelYouless -match $datumMindergas){ $Youlesswaarde = $($regelYouless.Split(" ")[-1].Replace(',','.')) [string]$LaatstestandMindergas = [Double]$LaatstestandMindergas + [Double]$Youlesswaarde [string]$LaatstestandMindergas = $LaatstestandMindergas.Replace(',','.') $Youlessdatum = $regelYouless.Split(" ")[0] $Youlessdatum = $(get-date($youlessdatum)).ToString("yyyy-MM-dd") Write-host "Van de datum :"$Youlessdatum "word de gaswaarde Youlesswaarde" $LaatstestandMindergas "geupload" $uploadMindergas = @{date=$Youlessdatum;reading=$LaatstestandMindergas} | ConvertTo-Json -Compress $uploadMindergas = $uploadMindergas.Replace('"','\"') $output = @() $output = & C:\Windows\System32\curl -v $argHeaderMindergas -d $uploadMindergas https://www.mindergas.nl/api/gas_meter_readings 2>&1 if ($output -like "*Status: 201 Created*") { Write-host "Van de datum :"$Youlessdatum "is de gaswaarde Youlesswaarde " $LaatstestandMindergas " succesvol Toegevoegd" } else{ write-host "Er lijkt iets mis te gaan." } Start-Sleep 2 } } } if (([DateTime]::Today).AddDays(-1).ToString("yyyyMMdd") -eq $([DateTime]$LaatstedatumMindergas).ToString("yyyyMMdd")) { Write-Host "er is niets te uploaden"} Write-host "klaar met het uploaden" |
[ Voor 107% gewijzigd door pkleingu2 op 15-02-2019 22:05 ]
A'dam PVOutput
Ik gebruik het script van Mindergas Domoticz.
Ik krijg de volgende foutmelding:
1
2
3
| Standaard uitvoer/fout: sh: -c: line 0: syntax error near unexpected token `10' sh: -c: line 0: `python /volume1/homes/admin/mindergas.py -a <mindergastoken> -d <10>' |
Ik heb het script aangepast maar weet niet of dat goed is. Ik heb de url van Domoticz aangepast naar 192.168.2.13:8084. Dit is de url van Domoticz op de Synology.
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
| # encoding: utf-8 ''' mindergas -- Upload meterstand van Domoticz naar MinderGas.nl Instructies: An P1 Smart Meter krijgt elk uur een update van de Gas meter. Voer dit script daarom in het eerste uur na middennacht uit. Bijvoorbeeld om 00:14. Hierdoor wordt de laatste meterstand van de vorige dag correct geregistreerd onder de datum van de vorige dag. ''' import sys, json, urllib2 from datetime import datetime, timedelta from argparse import ArgumentParser def main(argv=None): parser = ArgumentParser(description='Upload meterstand van Domoticz naar MinderGas.nl') parser.add_argument("-a", "--apikey", dest="apikey", help="MinderGas.nl API Key", required=True) parser.add_argument("-u", "--url", dest="url", help="URL naar Domoticz, eg: http://localhost:8080", default='http://192.168.2.13:8084') parser.add_argument("-d", "--device-id", dest="device", help="Device id voor de P1 Gas Smart Meter", type=int, required=True) args = parser.parse_args() device_data = json.load(urllib2.urlopen("%s/json.htm?type=devices&rid=%s" % (args.url, args.device), timeout=5)) meterstand = device_data['result'][0]['Counter'] code = upload_meterstand(meterstand, args.apikey) if code == 201: return 0 else: return code def upload_meterstand(meterstand, apikey): """ Upload meterstand naar mindergas.nl """ data = { 'date': (datetime.now().date() - timedelta(days=1)).strftime("%Y-%m-%d"), 'reading': meterstand } req = urllib2.Request('http://www.mindergas.nl/api/gas_meter_readings') req.add_header('Content-Type', 'application/json') req.add_header('AUTH-TOKEN', apikey) return urllib2.urlopen(req, json.dumps(data)).getcode() if __name__ == "__main__": sys.exit(main()) |
Bij de taakplanner van Synology heb ik de volgende cronjob aangemaakt.
1
| python /volume1/homes/admin/mindergas.py -a <mindergastoken> -d <10> |
Ergens gaat er iets niet goed, maar ik heb geen idee waar. Ben echt een noob in python

Je moet dit <mindergastoken> vervangen door je token die je van mindergas hebt (zonder < en >).Highfive95 schreef op zondag 3 januari 2021 @ 16:59:
Ik krijg de volgende foutmelding:
code:
1 2 3 Standaard uitvoer/fout: sh: -c: line 0: syntax error near unexpected token `10' sh: -c: line 0: `python /volume1/homes/admin/mindergas.py -a <mindergastoken> -d <10>'
Ook de <10> moet je gasmeter-idx (uit domoticz) zijn zonder < en >.
Dus bv
/volume1/homes/admin/mindergas.py -a xxx -d 10
(Waar je xxx moet opzoeken in je account bij mindergas)
Overigens staat dit toch duidelijk uitgelegd op
https://ehoco.nl/gasmeterstand-uploaden-naar-mindergas-nl/
[ Voor 15% gewijzigd door rvk op 03-01-2021 17:14 ]
Ik heb het aangepast en nu krijg ik de volgende foutmelding:rvk schreef op zondag 3 januari 2021 @ 17:09:
Dus bv
/volume1/homes/admin/mindergas.py -a xxx -d 10
(Waar je xxx moet opzoeken in je account bij mindergas)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Traceback (most recent call last): File "/volume1/homes/admin/mindergas.py", line 54, in <module> sys.exit(main()) File "/volume1/homes/admin/mindergas.py", line 27, in main device_data = json.load(urllib2.urlopen("%s/json.htm?type=devices&rid=%s" % (args.url, args.device), timeout=5)) File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python2.7/urllib2.py", line 429, in open response = self._open(req, data) File "/usr/lib/python2.7/urllib2.py", line 452, in _open 'unknown_open', req) File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain result = func(*args) File "/usr/lib/python2.7/urllib2.py", line 1266, in unknown_open raise URLError('unknown url type: %s' % type) urllib2.URLError: <urlopen error unknown url type: 192.168.2.13> |
Echt abracadabra voor mij.

Lees alleen de laatste regel.Highfive95 schreef op zondag 3 januari 2021 @ 17:13:
[...]
code:
1 2 ... urllib2.URLError: <urlopen error unknown url type: 192.168.2.13>
Echt abracadabra voor mij.
Je hebt zelf http://localhost:8080 gewijzigd in http://192.168.2.13:8084.
Is dat ook het ip en poort waar domoticz op draait?
Als die gewoon draait op dezelfde machine als domoticz (en port 8080) dan had je localhost gewoon kunnen laten staan.
In ieder geval gaat het mis met de communicatie met http://192.168.2.13:8084.
Domoticz draait op dit ip adres met deze poort. Moet ik dan localhost laten staan?rvk schreef op zondag 3 januari 2021 @ 17:24:
[...]
Lees alleen de laatste regel.
Je hebt zelf http://localhost:8080 gewijzigd in http://192.168.2.13:8084.
Is dat ook het ip en poort waar domoticz op draait?
Als die gewoon draait op dezelfde machine als domoticz (en port 8080) dan had je localhost gewoon kunnen laten staan.
In ieder geval gaat het mis met de communicatie met http://192.168.2.13:8084.
Als domoticz bereikbaar is op http://192.168.2.13:8084 dan zou het gewoon moeten werken.Highfive95 schreef op zondag 3 januari 2021 @ 17:32:
[...]
Domoticz draait op dit ip adres met deze poort. Moet ik dan localhost laten staan?
Wat geeft dit als resultaat in een browser op een andere pc?
http://192.168.2.13:8084/json.htm?type=devices&rid=10
Het is gelukt. Thanks
Het probleem was dat ik aangepaste bestand niet had geupload.

Heb het script getest en data wordt netjes geupload.
@Toppe (Domoticz) @Hmmbob (HASS) @GENETX (OpenHAB): Wellicht ook even posten in jullie topics?Wijzigingen per 1 januari 2021
In verband met het toevoegen van ondersteuning voor meterstanden in kWh en GJ zijn de volgende wijzigingen aan de API doorgevoerd:De oude API blijft voorlopig nog wel werken (zeker enkele maanden), maar update ajb jouw software.
- De URL is veranderd van http(s)://www.mindergas.nl/api/gas_meter_readings naar http(s)://www.mindergas.nl/api/meter_readings
- De meterstand in liters (reading_l) wordt niet meer ondersteund.
[ Voor 8% gewijzigd door ThinkPad op 07-01-2021 13:18 ]
Nu krijg je bijvoorbeeld 17-01-2023 23:59:59 te zien in Mindergas en die tijd is altijd hetzelfde.
Ik heb geprobeerd met :
fullDate=$(date +"%Y-%m-%dT%H:%M:%S")
en even verderop :
curl -k -H "Content-Type:application/json" -H "Accept:application/json" -H "AUTH-TOKEN:$token" -d '{"date":"'$fullDate'","reading":"'$gasCounter'"}' https://www.mindergas.nl/api/meter_readings > /dev/null 2>&1
Maar dat werkt niet. De geregistreerde tijd blijft nog steeds 23:59:59.
Tijdstippen daartussen voegen niet zoveel toe en worden blijkbaar ook niet geaccepteerd.
Ioniq 6 LR Lounge 20"
2700Wp SSW 30° @ SE2200 | 1720Wp SSW 5° @ HM-1500
Flickr | Canon 6D | 17-40mm f/4 + 50mm f/1.8 II + 70-200mm f/4 | 2x 430EX II | Sirui T005 + C10
Zelf heb ik geen thuisserver of iets dergelijks. Wel een vps waar ik node-red, domoticz of iets anders kan installeren. Dus de Wemos D1 zou dan zijn data via mqtt of domoticz http een kant heen moeten sturen.
weet iemand een korte route om de data van Wemos naar mindergas te krijgen?
Als je om 0:00 de data al opstuurt naar Mindergas dan mis je met een < DSMR5 meter in het slechtste geval dus het verbruik van een heel uur (23:00 - 0:00). Geen ramp natuurlijk, dat telt wel op bij de volgende dag, maar even ter info. Daarnaast scheelt het nog weer wat serverbelasting aan de kant van Mindergas om het niet op exact 0:00 te posten
Daarom ook suggestie van NAS/router, die praat wel gewoon HTTPS en kun je dan een scriptje voor maken om de P1 ESP uit te laten lezen.
[ Voor 27% gewijzigd door ThinkPad op 01-01-2024 14:29 ]
Ik ben nu op een punt gekomen dat ik afscheid moet gaan nemen van mijn rpi 1b+
Goed 12 jaar na uitkomst wordt het ook wel eens een keer tijd.
Wellicht moet ik toch ooit eens naar HA gaan kijken
Maar is het iemand al gelukt om het huidige script om te bouwen naar python 3 ?
* MdO82 loopt inderdaad nog wat achter
Maar het gezegde is toch isn't broken ...
2250 WP Zuid PVoutput
Maar ik heb er zelf nu weer eens tijd voor om ernaar te kijken.
Het volgende script gebruik(te) ik om mijn upload te uploaden naar minergas.
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
| # encoding: utf-8 ''' mindergas -- Upload meterstand van Domoticz naar MinderGas.nl Instructies: An P1 Smart Meter krijgt elk uur een update van de Gas meter. Voer dit script daarom in het eerste uur na middennacht uit. Bijvoorbeeld om 00:14. Hierdoor wordt de laatste meterstand van de vorige dag correct geregistreerd onder de datum van de vorige dag. ''' import sys, json, urllib.request, urllib.error, urllib.parse from datetime import datetime, timedelta from argparse import ArgumentParser def main(argv=None): parser = ArgumentParser(description='Upload meterstand van Domoticz naar MinderGas.nl') parser.add_argument("-a", "--apikey", dest="apikey", help="MinderGas.nl API Key", required=True) parser.add_argument("-u", "--url", dest="url", help="URL naar Domoticz, eg: http://localhost:8080", default='http://192.168.1.120:8080') parser.add_argument("-d", "--device-id", dest="device", help="Device id voor de P1 Gas Smart Meter", type=int, required=True) args = parser.parse_args() device_data = json.load(urllib.request.urlopen("%s/json.htm?type=devices&rid=%s" % (args.url, args.device), timeout=5)) meterstand = device_data['result'][0]['Counter'] code = upload_meterstand(meterstand, args.apikey) if code == 201: return 0 else: return code def upload_meterstand(meterstand, apikey): """ Upload meterstand naar mindergas.nl """ data = { 'date': (datetime.now().date() - timedelta(days=1)).strftime("%Y-%m-%d"), 'reading': meterstand } req = urllib.request.Request('http://www.mindergas.nl/api/meter_readings') req.add_header('Content-Type', 'application/json') req.add_header('AUTH-TOKEN', apikey) return urllib.request.urlopen(req, json.dumps(data)).getcode() if __name__ == "__main__": sys.exit(main()) |
Ik krijg de volgende error's als ik hem aftrap als Python2 of Python3
python2:
Traceback (most recent call last): File "mindergas.py", line 14, in <module> import sys, json, urllib.request, urllib.error, urllib.parse ImportError: No module named request
python3:
Traceback (most recent call last): File "mindergas.py", line 54, in <module> sys.exit(main()) File "mindergas.py", line 30, in main code = upload_meterstand(meterstand, args.apikey) File "mindergas.py", line 51, in upload_meterstand return urllib.request.urlopen(req, json.dumps(data)).getcode() File "/usr/lib/python3.9/urllib/request.py", line 214, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python3.9/urllib/request.py", line 514, in open req = meth(req) File "/usr/lib/python3.9/urllib/request.py", line 1277, in do_request_ raise TypeError(msg) TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.
Deze laatste foutmeldingen kan ik nog wel begrijpen, omdat het een python2-script is en geen python3-script.
Problemen zijn gekomen nadat ik mijn raspberry Pi1b+ heb moeten inruilen voor een Raspberry Pi3
Hopelijk weet iemand wat ik niet zie en kan mij op weg helpen om het script weer aan de gang te krijgen.
2250 WP Zuid PVoutput
Beste,
Je maakt gebruik van de Meterstand API voor het uploaden van de meterstanden naar jouw MinderGas account. Omdat onze kosten voor het in de lucht houden van MinderGas zijn gestegen en de advertentie-inkomsten wat zijn gedaald, hebben we besloten om een kleine bijdrage te vragen voor het gebruik van de API.
De jaarlijkse bijdrage bedraagt EUR 2,99 (nog geen 25 cent per maand) en gaat in per 1 februari 2025. Betaling van de bijdrage gaat via iDEAL op website. Je zal te zijner tijd hiervoor een geautomatiseerde herinneringse-mail ontvangen. Tegen het einde van het jaar waarvoor je hebt betaald, ontvang je opnieuw een herinneringse-mail. Er wordt niet automatisch verlengd.
Indien je dit niet wenst te betalen dan zal het per 1 februari niet meer mogelijk zijn om via de API meterstanden te uploaden naar jouw account. Je account blijft wel gewoon toegankelijk.
Hopende op je begrip, met vriendelijke groet,
MinderGas.nl
.BE | 12 kWh Victron ESS | 4,86 kWp ZP
Moet het perse python zijn? Ik gebruik dit al jaren op mijn RPI (ook ergens gevonden)MdO82 schreef op woensdag 23 oktober 2024 @ 15:59:
Helaas sinds Februari geen reactie mogen ontvangen zie ik
Maar ik heb er zelf nu weer eens tijd voor om ernaar te kijken.
Het volgende script gebruik(te) ik om mijn upload te uploaden naar minergas.
Python:
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 # encoding: utf-8 ''' mindergas -- Upload meterstand van Domoticz naar MinderGas.nl Instructies: An P1 Smart Meter krijgt elk uur een update van de Gas meter. Voer dit script daarom in het eerste uur na middennacht uit. Bijvoorbeeld om 00:14. Hierdoor wordt de laatste meterstand van de vorige dag correct geregistreerd onder de datum van de vorige dag. ''' import sys, json, urllib.request, urllib.error, urllib.parse from datetime import datetime, timedelta from argparse import ArgumentParser def main(argv=None): parser = ArgumentParser(description='Upload meterstand van Domoticz naar MinderGas.nl') parser.add_argument("-a", "--apikey", dest="apikey", help="MinderGas.nl API Key", required=True) parser.add_argument("-u", "--url", dest="url", help="URL naar Domoticz, eg: http://localhost:8080", default='http://192.168.1.120:8080') parser.add_argument("-d", "--device-id", dest="device", help="Device id voor de P1 Gas Smart Meter", type=int, required=True) args = parser.parse_args() device_data = json.load(urllib.request.urlopen("%s/json.htm?type=devices&rid=%s" % (args.url, args.device), timeout=5)) meterstand = device_data['result'][0]['Counter'] code = upload_meterstand(meterstand, args.apikey) if code == 201: return 0 else: return code def upload_meterstand(meterstand, apikey): """ Upload meterstand naar mindergas.nl """ data = { 'date': (datetime.now().date() - timedelta(days=1)).strftime("%Y-%m-%d"), 'reading': meterstand } req = urllib.request.Request('http://www.mindergas.nl/api/meter_readings') req.add_header('Content-Type', 'application/json') req.add_header('AUTH-TOKEN', apikey) return urllib.request.urlopen(req, json.dumps(data)).getcode() if __name__ == "__main__": sys.exit(main())
Ik krijg de volgende error's als ik hem aftrap als Python2 of Python3
python2:
Traceback (most recent call last): File "mindergas.py", line 14, in <module> import sys, json, urllib.request, urllib.error, urllib.parse ImportError: No module named request
python3:
Traceback (most recent call last): File "mindergas.py", line 54, in <module> sys.exit(main()) File "mindergas.py", line 30, in main code = upload_meterstand(meterstand, args.apikey) File "mindergas.py", line 51, in upload_meterstand return urllib.request.urlopen(req, json.dumps(data)).getcode() File "/usr/lib/python3.9/urllib/request.py", line 214, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python3.9/urllib/request.py", line 514, in open req = meth(req) File "/usr/lib/python3.9/urllib/request.py", line 1277, in do_request_ raise TypeError(msg) TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.
Deze laatste foutmeldingen kan ik nog wel begrijpen, omdat het een python2-script is en geen python3-script.
Problemen zijn gekomen nadat ik mijn raspberry Pi1b+ heb moeten inruilen voor een Raspberry Pi3
Hopelijk weet iemand wat ik niet zie en kan mij op weg helpen om het script weer aan de gang te krijgen.
mindergas.sh
#!/bin/bash #Token to authenicate with mindergas.nl TOKEN=xxx #fetch meterstand (use jq to parse JSON object correctly) METERSTAND=`curl -s "http://192.168.X.X:xxxx/json.htm?type=devices&rid=12" | jq '.result[0].Counter'| tr -d '"'` #Get OS date, and format it corectly. NOW=$(date +"%Y-%m-%d") #Build JSON by hand ;-) JSON='{ "date":"'$NOW'", "reading":"'$METERSTAND'" }' #post using curl to API curl -v -H "Content-Type:application/json" -H "AUTH-TOKEN:$TOKEN" -d "$JSON" https://www.mindergas.nl/api/meter_readings
En dan gewoon elke nacht uitvoeren via crontab
Niet meer dan logisch denk ik.Kristofferson schreef op vrijdag 1 november 2024 @ 17:11:
De API wordt betalend in de toekomst (€3/jaar). Volgende e-mail ontvangen:
[...]
Ik twijfel zelf nog of ik m’n account in stand houd, of hem opzeg. Doe eigenlijk weinig nog met Mindergas. Toen ik net verhuisd was en nog druk bezig was met CV-tuning was het handig. Maar dat is allemaal geoptimaliseerd en gasverbruik is ondertussen al jaren vrijwel gelijk.
Aan de andere kant: ik kan ook elke maand even handmatig de stand invoeren.
Bedankt voor het delen van jouw script.Pino112 schreef op vrijdag 1 november 2024 @ 17:22:
[...]
Moet het perse python zijn? Ik gebruik dit al jaren op mijn RPI (ook ergens gevonden)
mindergas.sh
#!/bin/bash #Token to authenicate with mindergas.nl TOKEN=xxx #fetch meterstand (use jq to parse JSON object correctly) METERSTAND=`curl -s "http://192.168.X.X:xxxx/json.htm?type=devices&rid=12" | jq '.result[0].Counter'| tr -d '"'` #Get OS date, and format it corectly. NOW=$(date +"%Y-%m-%d") #Build JSON by hand ;-) JSON='{ "date":"'$NOW'", "reading":"'$METERSTAND'" }' #post using curl to API curl -v -H "Content-Type:application/json" -H "AUTH-TOKEN:$TOKEN" -d "$JSON" https://www.mindergas.nl/api/meter_readings
En dan gewoon elke nacht uitvoeren via crontab
Had het ooit als python-script gevonden van iemand, maar had er verder nooit meer naar gekeken omdat de boel draaide totdat ik mijn raspberry Pi 1b+ niet meer kon gebruiken

Ik had het script in de map geplaatst en via crontab een opdracht ingevoerd voor elke nacht zodat de laatste stand doorgegeven wordt.
Helaas worden de waarden niet doorgegeven.
Zojuist het script handmatig gestart, maar krijg dan een 422 error.
Volgens mij was dat iets van dat de waarde reeds bekend was ?
Als ik een curl-opdracht stuur naar mijn meter dan krijg ik het volgende terug.
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
| { "ActTime" : 1730549962, "AstrTwilightEnd" : "19:07", "AstrTwilightStart" : "05:45", "CivTwilightEnd" : "17:48", "CivTwilightStart" : "07:04", "DayLength" : "09:34", "NautTwilightEnd" : "18:28", "NautTwilightStart" : "06:24", "ServerTime" : "2024-11-02 13:19:22", "SunAtSouth" : "12:26", "Sunrise" : "07:39", "Sunset" : "17:13", "app_version" : "2024.7", "result" : [ { "AddjMulti" : 1.0, "AddjMulti2" : 1.0, "AddjValue" : 0.0, "AddjValue2" : 0.0, "BatteryLevel" : 255, "Counter" : "4634.939", "CounterToday" : "0.052 m3", "CustomImage" : 0, "Data" : "4634.939", "Description" : "", "Favorite" : 1, "HardwareDisabled" : false, "HardwareID" : 2, "HardwareName" : "Energiemeter", "HardwareType" : "P1 Smart Meter USB", "HardwareTypeVal" : 4, "HaveTimeout" : false, "ID" : "0001", "LastUpdate" : "2024-11-02 13:16:11", "Name" : "Gasmeter", "Notifications" : "false", "PlanID" : "0", "PlanIDs" : [ 0 ], "Protected" : false, "ShowNotifications" : true, "SignalLevel" : "-", "SubType" : "Gas", "SwitchTypeVal" : 1, "Timers" : "false", "Type" : "P1 Smart Meter", "TypeImg" : "counter", "Unit" : 2, "Used" : 1, "XOffset" : "0", "YOffset" : "0", "idx" : "2", "price" : "0.0000" } ], "status" : "OK", "title" : "Devices" } |
Het gaat blijkbaar mis naar mindergas toe, maar ik ben helaas kwijt.
Dacht dat het dus kwam omdat er een waarde reeds bekend is, maar als ik de waarde bij mindergas verwijder dan blijf ik de foutmelding houden.
Hopelijk kunnen jullie mij een duwtje in de juiste richting geven.
2250 WP Zuid PVoutput
Voor die 3 euro per jaar ga ik me er niet aan wagen, maar in principe is het toch wel mogelijk om elke dag even die webpagina te curlen met de actuele meterstand voor die dag?_JGC_ schreef op zaterdag 2 november 2024 @ 09:06:
Ik doe het ook nog handmatig maar ga het automatiseren. Sponsor het project al elk jaar door de advertenties af te kopen, maar omdat het niet automatisch verlengd wordt en je daar geen melding van krijgt is dat niet heel consistent (ik zie de banners sowieso niet ivm pihole).
Ach, de initiatiefnemer is een aardig iemand. Heeft me in het begin goed op weg geholpen. Drie euro is natuurlijk ook niet iets waar je rijk van wordt.PhilipsFan schreef op maandag 11 november 2024 @ 00:42:
[...]
Voor die 3 euro per jaar ga ik me er niet aan wagen, maar in principe is het toch wel mogelijk om elke dag even die webpagina te curlen met de actuele meterstand voor die dag?
A'dam PVOutput
Ik heb destijds dit script geïmplementeerd en ik zag dat die om 23:58 de upload doet, en ik meen dat er werd aanbevolen om niet te dicht rond middernacht te gaan zitten omdat iedereen dat doet en dan de server mogelijk overbelast is.
Kan iemand bevestigen dat bovenstaande aannemelijk is?
Ik heb nu sowieso het script aangepast om iets eerder te gaan draaien, om te zien of dit het verhelpt.
Grote kans dat het issue binnenkort zichzelf oplost, de API van Mindergas wordt per 1-2 betalend dus er zullen ongetwijfeld een hoop mensen afhaken.
[ Voor 5% gewijzigd door ThinkPad op 01-01-2025 13:13 ]
Dat is een goeie. Ik heb ook zo'n oude DSMR4 meter en ik merk ook dat die updates wel even kunnen duren.ThinkPad schreef op woensdag 1 januari 2025 @ 13:12:
Je kan beter later doen, want ik heb gemerkt bij mijn meter dat hij de gasmeterstand soms een paar minuten na het hele uur pas doorgeeft aan de elektrameter. Dat is wel met een DSMR4 meter trouwens, die maar één keer per uur de gasstand doorgeeft. De upload naar Mindergas gaat bij mij om 0:08
Grote kans dat het issue binnenkort zichzelf oplost, de API van Mindergas wordt per 1-2 betalend dus er zullen ongetwijfeld een hoop mensen afhaken.
Ik weet alleen niet hoe het werkt met het script dat ik gebruik, of hij met een upload na middernacht nog wel de datum van de vorige dag pakt.
Vooralsnog wacht ik het wel even af. Die betaling zal het inderdaad voor velen minder aantrekkelijk maken. Grote kans ook dat er veel mensen zijn die nog altijd dagelijks uploaden maar de interesse al zijn verloren.
Verbruik na middernacht is te verwaarlozen.
1
2
3
4
5
6
7
8
9
10
11
| alias: Mindergas Upload id: bb0ddd49-e072-4be6-83cd-b515e11d0a51 trigger: - at: "00:01:10" platform: time condition: [] action: - service: rest_command.mindergas_upload data: date: '{{ (as_timestamp(now()) - (24*3600)) | timestamp_custom("%Y-%m-%d", True)}}' reading: "{{ states('sensor.toon_gas_used_cnt') | float }}" |
1
2
3
4
5
6
7
8
| rest_command: mindergas_upload: url: "https://www.mindergas.nl/api/meter_readings" method: POST headers: content-type: application/json AUTH-TOKEN: !secret mindergas_api_token payload: '{ "date": "{{date}}", "reading": "{{reading}}" }' |
Edit: oh, en tegenwoordig kun je eenvoudig een sensor op een vast tijdstip laten updaten met een template sensor timed trigger.
[ Voor 7% gewijzigd door RudolfR op 02-01-2025 12:10 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
| domoticz.openURL({ url = 'https://www.mindergas.nl/api/meter_readings', method = 'POST', headers = { ['Content-Type'] = 'application/json', ['AUTH-TOKEN'] = AUTH_TOKEN }, callback = 'UploadToMindergas', postData = { ['date'] = TodaysDate, ['reading'] = GasUsageCounter }, }).withinHour(4) |
Wat is de http-response?
Dan zal het toch aan mij liggen. Ik heb het script nog eens nagelopen en alles klopt (juiste sensor-naam, auth-token klopt nog, etc). Zou ook niks verkeerd aan moeten zijn, want het is ineens gestopt met werken terwijl het altijd goed heeft gewerkt.Heinemancp schreef op maandag 6 januari 2025 @ 14:19:
Hier werkt het prima. Goede adres (ik gebruik meter_readings, jouw gelinkte script geeft aan gas_meter_readings), Auth_token en datum gebruikt?
Wat is de http-response?
Ik krijg geen http-response omdat ik een timeout call krijg. Dat doet me vermoeden dat de Mindergas-server niet bereikbaar is, maar als het bij jou wel werkt, gaat het ergens anders mis. Ik heb alleen geen idee waar.
Ook gas_meter_readings vs meter_readings bekeken?RoD schreef op dinsdag 7 januari 2025 @ 11:08:
[...]
Dan zal het toch aan mij liggen. Ik heb het script nog eens nagelopen en alles klopt (juiste sensor-naam, auth-token klopt nog, etc). Zou ook niks verkeerd aan moeten zijn, want het is ineens gestopt met werken terwijl het altijd goed heeft gewerkt.
Ik krijg geen http-response omdat ik een timeout call krijg. Dat doet me vermoeden dat de Mindergas-server niet bereikbaar is, maar als het bij jou wel werkt, gaat het ergens anders mis. Ik heb alleen geen idee waar.
Ja die is correct. Het gelinkte script geeft inderdaad het oude adres van de api aan, maar bij mij staat het goed. En zoals gezegd, het heeft tot een paar dagen geleden gewoon gewerkt, maar geeft nu timeout calls.Heinemancp schreef op dinsdag 7 januari 2025 @ 11:36:
[...]
Ook gas_meter_readings vs meter_readings bekeken?
Ik upload om 5 uur (UTC), mijn script probeert het 5x. Ik krijg een mail als het niet lukt, maar tot nu toe is dat voldoende.RoD schreef op dinsdag 7 januari 2025 @ 11:42:
[...]
Ja die is correct. Het gelinkte script geeft inderdaad het oude adres van de api aan, maar bij mij staat het goed. En zoals gezegd, het heeft tot een paar dagen geleden gewoon gewerkt, maar geeft nu timeout calls.
Kan het zijn dat je geen toegang meer hebt tot de API? https://mindergas.nl/member/api
Ik weet niet precies vanaf wanneer de API geblokkeerd wordt als je die paar euro niet betaald.
Edit: oh je hebt timeouts, dan zal het niet aan de API toegang zelf liggen.
[ Voor 39% gewijzigd door Kalentum op 07-01-2025 11:55 ]
Klopt, daar ligt het niet aan, ik heb nog gewoon toegang. Ik vermoed ook niet dat ik geblokkeerd ben, want ik vermoed dat ik dan een http-foutcode zou krijgen.Kalentum schreef op dinsdag 7 januari 2025 @ 11:49:
[...]
Ik upload om 5 uur (UTC), mijn script probeert het 5x. Ik krijg een mail als het niet lukt, maar tot nu toe is dat voldoende.
Kan het zijn dat je geen toegang meer hebt tot de API? https://mindergas.nl/member/api
Ik weet niet precies vanaf wanneer de API geblokkeerd wordt als je die paar euro niet betaald.
Edit: oh je hebt timeouts, dan zal het niet aan de API toegang zelf liggen.
https://mindergas.nl/member/api
Bij mij 1 februari 2025, nog nooit betaald.
Maar dan zou je geen timeouts moeten krijgen, maar:
402 Payment Required
Je hebt geen toegang meer tot de API. Na het betalen van de bescheiden jaarlijkse bijdrage is dit verholpen.
[ Voor 49% gewijzigd door RudolfR op 07-01-2025 11:58 ]

Question 1 by the guys of ITRoD schreef op donderdag 9 januari 2025 @ 10:22:
Nou het lijkt opgelost. Na werkelijk alles te hebben geprobeerd, bedacht ik me nog een ding: mijn Raspberry Pi rebooten. En dat werkte, er wordt nu weer een meterstand geupload. Had ik natuurlijk als eerste moeten proberen
Ik ga het voortaan even handmatig elke maand invullen. Keek er toch nauwelijks nog naar dus heb er wel vrede mee, maar voor de prognose/graaddagen wil ik m'n account nog wel aanhouden.
[ Voor 59% gewijzigd door ThinkPad op 31-01-2025 22:07 ]