Acties:
  • 0 Henk 'm!

  • Stalkert
  • Registratie: Januari 2001
  • Laatst online: 06-08 15:23
Matched: curl, data, http, api, v1
Weet iemand waarom curl een 405 error teruggeeft waneer ik de api wil gebruiken?
➜ ~ curl -I http://192.168.3.33/api/v1/data
HTTP/1.1 405 Method Not Allowed
Content-Type: text/html
Content-Length: 52

[ Voor 9% gewijzigd door Stalkert op 10-10-2020 15:56 ]


Acties:
  • 0 Henk 'm!

  • Cap
  • Registratie: Juli 2000
  • Niet online

Cap

Matched: curl, data, http, api, v1
Update voor wie niet alleen van de HWE app op je smart device afhankelijk wil zijn maar de gegevens ook elders wil opslaan en in een webbrowser kunnen bekijken.

Naast de upload van stroom data naar de PVOutput website (zie mijn vorige post) heb ik nu ook een script gemaakt voor upload van de dagelijkse gas meterstand naar Mindergas. Deze website biedt de mogelijkheid om je gasverbruik te monitoren en vergelijken met vorige maanden, jaren, etc. en ook vergelijken met het gasverbruik van anderen.

Onderstaand Linux shellscript draai ik op een Asus RT-AC86U router (Merlin firmware). Het script upload elke nacht de gasmeterstand via een cron job op de router. Het script schrijft verder de output weg naar een logfile op een aangesloten USB drive.

Dit script is natuurlijk gemakkelijk werkend te krijgen op andere Linux based devices met wat kleine aanpassingen in de paden. Zoek je eigen Linux device dat altijd aan staat. :)

Verder moet je natuurlijk je eigen gegevens toevoegen aan het script: je IP-adres/poortnr en de op Mindergas.nl te genereren API key.

Heb je geen behoefte aan logging dan kan je de delen die de output naar een directoy / bestand verzorgen natuurlijk weglaten, dan houd je een kort script over.

Bash:
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
#!/bin/sh
# name: mindergas-upload
# description: upload HomeWizard Wi-Fi P1 meter gas meterstand to Mindergas.nl website
# location: /jffs/scripts

youripaddress="YOUR_IPADRESS"
yourportnr="YOUR_PORTNR"
yourapikey="YOUR_MINDERGAS_APIKEY"
logfile="mindergas.log"

# place logfile output in the mindergas directory of the first USB drive partition
# if no USB drive output goes to /tmp
usbdrive=$(grep "/dev/sda1" /proc/mounts | cut -d ' ' -f 2)
if [ "$usbdrive" ]; then
  test -d $usbdrive/mindergas || mkdir $usbdrive/mindergas #create directory if not present
  cd $usbdrive/mindergas
else
  cd /tmp
fi

# get current energy data from P1 Meter
energydata=$(wget http://"$youripaddress:$yourportnr"/api/v1/data -qO-)
meterstand=$(echo "$energydata" | sed 's/,/\n/g' | grep "total_gas_m3" | cut -d: -f2)

# set the date variable
datestamp=$(date +"%Y-%m-%d")

# save output to logfile
echo date: $datestamp, meter: $meterstand >> $logfile 2>&1

# post meterstand to Mindergas.nl site, save response to logfile
status=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:$yourapikey" -d '{"date":"'$datestamp'", "reading": "'$meterstand'" }' https://www.mindergas.nl/api/gas_meter_readings)
echo $status >> $logfile 2>&1


Toevoegen aan cron voor het eens per dag draaien gebeurt dmv toevoegen van iets als onderstaande (pad aanpassen) aan bijv Linux startscripts init-start of services-start. Neem een willekeurige tijd tussen 00:00 en 01:00 om te zorgen dat de server last een beetje gespreid wordt, dus niet allemaal om 00:00 uploaden. ;) (Voorbeeld is 0:44).

Bash:
1
cru a mindergas-upload "44 0 * * * /PADNAARJOUWSCRIPT/mindergas-upload" # 0:44 am mindergas-upload cron job

Acties:
  • +1 Henk 'm!

  • andriesvd
  • Registratie: Augustus 2020
  • Laatst online: 21:08
Matched: curl, data, http, api, v1
Cap schreef op maandag 8 februari 2021 @ 21:13:
Update voor wie niet alleen van de HWE app op je smart device afhankelijk wil zijn maar de gegevens ook elders wil opslaan en in een webbrowser kunnen bekijken.

Naast de upload van stroom data naar de PVOutput website (zie mijn vorige post) heb ik nu ook een script gemaakt voor upload van de dagelijkse gas meterstand naar Mindergas. Deze website biedt een gratis service om je gasverbruik te monitoren en vergelijken met vorige maanden / jaren, en ook vergelijken met het gasverbruik van anderen.

Onderstaand Linux shellscript draai ik op een Asus RT-AC86U router (Merlin firmware). Het script upload elke nacht de gasmeterstand via een cron job op de router. Het script schrijft verder de output weg naar een logfile op een aangesloten USB drive.

Dit script is natuurlijk gemakkelijk werkend te krijgen op andere Linux based devices met wat kleine aanpassingen in de paden. Zoek je eigen Linux device dat altijd aan staat. :)

Verder moet je natuurlijk je eigen gegevens toevoegen aan het script: je IP-adres/poortnr en de op Mindergas.nl te genereren API key.

Bash:
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
#!/bin/sh
# name: mindergas-upload
# description: upload HomeWizard Wi-Fi P1 meter gas meterstand to Mindergas.nl website
# location: /jffs/scripts

youripaddress="YOUR_IPADRESS"
yourportnr="YOUR_PORTNR"
yourapikey="YOUR_MINDERGAS_APIKEY"
logfile="mindergas.log"

# place logfile output in the mindergas directory of the first USB drive partition
# if no USB drive output goes to /tmp
usbdrive=$(grep "/dev/sda1" /proc/mounts | cut -d ' ' -f 2)
if [ "$usbdrive" ]; then
  test -d $usbdrive/mindergas || mkdir $usbdrive/mindergas #create directory if not present
  cd $usbdrive/mindergas
else
  cd /tmp
fi

# get current energy data from P1 Meter
energydata=$(wget http://"$youripaddress:$yourportnr"/api/v1/data -qO-)
meterstand=$(echo "$energydata" | sed 's/,/\n/g' | grep "total_gas_m3" | cut -d: -f2)

# set the date variable
datestamp=$(date +"%Y-%m-%d")

# save output to logfile
echo date: $datestamp, meter: $meterstand >> $logfile 2>&1

# post meterstand to Mindergas.nl site, save response to logfile
status=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:$apikey" -d '{"date":"'$datestamp'", "reading": "'$meterstand'" }' https://www.mindergas.nl/api/gas_meter_readings)
echo $status >> $logfile 2>&1


Toevoegen aan cron voor het eens per dag draaien gebeurt dmv toevoegen van iets als onderstaande (pad aanpassen) aan bijv Linux startscripts init-start of services-start. Neem een willekeurige tijd tussen 00:00 en 01:00 om te zorgen dat de server last een beetje gespreid wordt, dus niet allemaal om 00:00 uploaden. ;) (Voorbeeld is 0:44).

Bash:
1
cru a mindergas-upload "44 0 * * * /PADNAARJOUWSCRIPT/mindergas-upload" # 0:44 am mindergas-upload cron job
Handig script! Meteen even getest. :) Je moet met curl alleen even -H "AUTH-TOKEN:$yourapikey" meegeven als header.

PV 3195Wp op ZO & 2130Wp op NW


Acties:
  • 0 Henk 'm!

  • racinfo
  • Registratie: Juni 2005
  • Laatst online: 19-02-2022

racinfo

E-MTB

Matched: curl, data, http, api, v1
Tweakers, ik zou onder Windows 10 64bit de P1 API data willen uitlezen en de uitkomst in een text file plaatsen ZONDER daarvoor een browser of ander hulpprogramma te moeten starten.

Onder DOS op 'n 32 bit machine lukt het met de opdracht:
curl -v http://192.168.2.xx/api/v1/data > api.txt

Wie kan mij helpen?

Acties:
  • 0 Henk 'm!

  • Crxtreem
  • Registratie: Augustus 2007
  • Niet online
Matched: curl, data, http, api, v1
racinfo schreef op vrijdag 17 september 2021 @ 15:17:
Tweakers, ik zou onder Windows 10 64bit de P1 API data willen uitlezen en de uitkomst in een text file plaatsen ZONDER daarvoor een browser of ander hulpprogramma te moeten starten.

Onder DOS op 'n 32 bit machine lukt het met de opdracht:
curl -v http://192.168.2.xx/api/v1/data > api.txt

Wie kan mij helpen?
Misschien is dan dit topic wat voor je.
Daar hebben ze een tooltje
https://gathering.tweakers.net/forum/list_messages/2050924

Acties:
  • 0 Henk 'm!

  • racinfo
  • Registratie: Juni 2005
  • Laatst online: 19-02-2022

racinfo

E-MTB

Matched: curl, data, http, api, v1
7o9 schreef op vrijdag 17 september 2021 @ 19:21:
[...]


curl is ook een hulpprogramma, dat is geen standaard onderdeel van windows.

het bestaat ook gewoon voor 64bit windows: https://curl.se/windows/
Dank, dat ga ik eens bekijken.
Onder DOS is cURL met cURL -v http://ip-adres/api/v1/data > api.txt de juiste methode en werkt daar perfect. (de file api.txt bevat de info).

Ook onder windows:
https://jarnobaselier.nl/curl/

Edit//
Ik heb de opdracht gevonden, om mijn (ex)probleem duidelijk te maken hier de juiste commando regel:
cURL -o api.txt http://192.168.2.14/api/v1/data

levert de volgende uitkomst in api.txt op:
{"smr_version":50,"meter_model":"ISKRA 2M550E-1013","wifi_ssid":"network","wifi_strength":46,"total_power_import_t1_kwh":61.818,"total_power_import_t2_kwh":48.491,"total_power_export_t1_kwh":0,"total_power_export_t2_kwh":0,"active_power_w":159,"active_power_l1_w":160,"active_power_l2_w":null,"active_power_l3_w":null,"total_gas_m3":2.579,"gas_timestamp":210918120005}

Opmerking,
wellicht kan ik ook anderen hiermee helpen bij uitlezen van de P1 WiFi API _/-\o_

[ Voor 65% gewijzigd door racinfo op 18-09-2021 16:13 ]


Acties:
  • 0 Henk 'm!

  • merlin1201
  • Registratie: Juni 2011
  • Laatst online: 19:48
Matched: curl, data, http, api, v1
Cap schreef op maandag 8 februari 2021 @ 21:13:
Update voor wie niet alleen van de HWE app op je smart device afhankelijk wil zijn maar de gegevens ook elders wil opslaan en in een webbrowser kunnen bekijken.

Naast de upload van stroom data naar de PVOutput website (zie mijn vorige post) heb ik nu ook een script gemaakt voor upload van de dagelijkse gas meterstand naar Mindergas. Deze website biedt de mogelijkheid om je gasverbruik te monitoren en vergelijken met vorige maanden, jaren, etc. en ook vergelijken met het gasverbruik van anderen.

Onderstaand Linux shellscript draai ik op een Asus RT-AC86U router (Merlin firmware). Het script upload elke nacht de gasmeterstand via een cron job op de router. Het script schrijft verder de output weg naar een logfile op een aangesloten USB drive.

Dit script is natuurlijk gemakkelijk werkend te krijgen op andere Linux based devices met wat kleine aanpassingen in de paden. Zoek je eigen Linux device dat altijd aan staat. :)

Verder moet je natuurlijk je eigen gegevens toevoegen aan het script: je IP-adres/poortnr en de op Mindergas.nl te genereren API key.

Heb je geen behoefte aan logging dan kan je de delen die de output naar een directoy / bestand verzorgen natuurlijk weglaten, dan houd je een kort script over.

Bash:
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
#!/bin/sh
# name: mindergas-upload
# description: upload HomeWizard Wi-Fi P1 meter gas meterstand to Mindergas.nl website
# location: /jffs/scripts

youripaddress="YOUR_IPADRESS"
yourportnr="YOUR_PORTNR"
yourapikey="YOUR_MINDERGAS_APIKEY"
logfile="mindergas.log"

# place logfile output in the mindergas directory of the first USB drive partition
# if no USB drive output goes to /tmp
usbdrive=$(grep "/dev/sda1" /proc/mounts | cut -d ' ' -f 2)
if [ "$usbdrive" ]; then
  test -d $usbdrive/mindergas || mkdir $usbdrive/mindergas #create directory if not present
  cd $usbdrive/mindergas
else
  cd /tmp
fi

# get current energy data from P1 Meter
energydata=$(wget http://"$youripaddress:$yourportnr"/api/v1/data -qO-)
meterstand=$(echo "$energydata" | sed 's/,/\n/g' | grep "total_gas_m3" | cut -d: -f2)

# set the date variable
datestamp=$(date +"%Y-%m-%d")

# save output to logfile
echo date: $datestamp, meter: $meterstand >> $logfile 2>&1

# post meterstand to Mindergas.nl site, save response to logfile
status=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:$yourapikey" -d '{"date":"'$datestamp'", "reading": "'$meterstand'" }' https://www.mindergas.nl/api/gas_meter_readings)
echo $status >> $logfile 2>&1


Toevoegen aan cron voor het eens per dag draaien gebeurt dmv toevoegen van iets als onderstaande (pad aanpassen) aan bijv Linux startscripts init-start of services-start. Neem een willekeurige tijd tussen 00:00 en 01:00 om te zorgen dat de server last een beetje gespreid wordt, dus niet allemaal om 00:00 uploaden. ;) (Voorbeeld is 0:44).

Bash:
1
cru a mindergas-upload "44 0 * * * /PADNAARJOUWSCRIPT/mindergas-upload" # 0:44 am mindergas-upload cron job
Inmiddels ook bezig om dit script op mijn Raspberry werkend te krijgen.
Het lijkt goed te gaan echter het log file geeft de volgende error:
date: 2021-12-19, meter:
{"error":"Meterstand is geen getal"}422

Er wordt dan ook geen meterstand geupload


hieronder als ik het script handmatig start:

pi@raspberrypi:/home/mgas $ ./mindergas
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 213.207.97.49:443...
* Connected to www.mindergas.nl (213.207.97.49) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [93 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [4927 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, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: CN=mindergas.nl
* start date: Jul 21 00:00:00 2021 GMT
* expire date: Jul 26 23:59:59 2022 GMT
* subjectAltName: host "www.mindergas.nl" matched cert's "www.mindergas.nl"
* issuer: C=GB; ST=Greater Manchester; L=Salford; O=Sectigo Limited; CN=Sectigo RSA Domain Validation Secure Server CA
* SSL certificate verify ok.
} [5 bytes data]
> POST /api/gas_meter_readings HTTP/1.1
> Host: www.mindergas.nl
> User-Agent: curl/7.74.0
> Accept: */*
> Content-Type:application/json
> AUTH-TOKEN:*** Mijntoken ***
> Content-Length: 37
>
} [37 bytes data]
* upload completely sent off: 37 out of 37 bytes
{ [5 bytes data]
* Mark bundle as not supporting multiuse
< HTTP/1.1 422 Unprocessable Entity
< Date: Sun, 19 Dec 2021 09:43:53 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: 9b1f1cdb-d87b-485a-957a-1b2846f9c7bf
< X-Runtime: 0.022607
< Strict-Transport-Security: max-age=15552000; includeSubDomains
< X-Powered-By: Phusion Passenger 4.0.60
< Status: 422 Unprocessable Entity
< X-Powered-By: PleskLin
< Transfer-Encoding: chunked
< Content-Type: application/json; charset=utf-8
<
{ [5 bytes data]
100 73 0 36 100 37 204 210 --:--:-- --:--:-- --:--:-- 414
* Connection #0 to host www.mindergas.nl left intact

4800 Wp 10x ZO 6x NW https://pvoutput.org/intraday.jsp?id=74451&sid=66030


Acties:
  • 0 Henk 'm!

  • merlin1201
  • Registratie: Juni 2011
  • Laatst online: 19:48
Matched: curl, data, http, api, v1
Dit is wat ik tot dusver gebruik, maar de meterstand wordt niet bijgewerkt op kindergas, en nog steeds error meterstand is geen getal. 422


#!/bin/sh
# name: mindergas-upload
# description: upload HomeWizard Wi-Fi P1 meter gas meterstand to Mindergas.nl website
# location: /jffs/scripts

youripaddress=“192.168.2.125”
yourapikey="api-key"
logfile="mindergas.log"

# place logfile output in the mindergas directory of the first USB drive partition
# if no USB drive output goes to /tmp
usbdrive=$(grep "/dev/sda1" /proc/mounts | cut -d ' ' -f 2)
if [ "$usbdrive" ]; then
test -d $usbdrive/mindergas || mkdir $usbdrive/mindergas #create directory if not present
cd $usbdrive/mindergas
else
cd /tmp
fi

# get current energy data from P1 Meter
energydata=$(wget http://"$youripaddress"/api/v1/data -qO-)
meterstand=$(echo "$energydata" | sed 's/,/\n/g' | grep "total_gas_m3" | cut -d: -f2)

# set the date variable
datestamp=$(date +"%Y-%m-%d")

# save output to logfile
echo date: $datestamp, meter: $meterstand >> $logfile 2>&1

# post meterstand to Mindergas.nl site, save response to logfile
status=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:$yourapikey" -d '{"date":"'$datestamp'", "reading": "'$meterstand'" }' http://www.mindergas.nl/api/meter_readings)
echo $status >> $logfile 2>&1

[ Voor 4% gewijzigd door merlin1201 op 20-12-2021 17:20 ]

4800 Wp 10x ZO 6x NW https://pvoutput.org/intraday.jsp?id=74451&sid=66030


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 17-10 20:07

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Matched: curl, data, http, api, v1
Mitt3nz schreef op maandag 12 december 2022 @ 14:12:
[...]


Alright, nadat ik de P1 meter van de stroom heb gehaald en weer opgestart heb, kan ik wel de Local API aanzetten via de app. Als ik echter de P1 meter daarna via curl benader krijg ik een 403 Forbidden. Andere HomeWizard endpoints zijn wel gewoon bereikbaar. Moet je de P1 meter anders benaderen ofzo?

Ik doe nu dit: `curl http://192.168.1.xx/api`.
Hier werkt dat endpoint in elk geval gewoon op de P1. Krijg je op /api/v1/data wel output?

[ Voor 5% gewijzigd door Orion84 op 12-12-2022 14:15 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • charles1983
  • Registratie: Juni 2009
  • Laatst online: 17-10 16:39
Matched: curl, data, http, api, v1
Ik ben ook geen wonder met programmeren, maar heb hierbij een werkend php script. Ook hierbij hoef je alleen het ipadres te wijzigen.

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
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
<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://192.168.178.13/api/v1/data"); // wijzig ipadres in het ipadres van je HomeWizard P1 meter
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);

if (curl_errno($ch)) { echo curl_error($ch); }
else {
 // echo $result; / STRING  verwijder "//" om alle data weer te geven
  $decoded = json_decode($result);
  $active_power_w = $decoded->active_power_w;
  $active_power_l1_w = $decoded->active_power_l1_w;
  $active_power_l2_w = $decoded->active_power_l2_w;
  $active_power_l3_w = $decoded->active_power_l3_w;
  $active_voltage_l1_v = $decoded->active_voltage_l1_v;
  $active_voltage_l2_v = $decoded->active_voltage_l2_v;
  $active_voltage_l3_v = $decoded->active_voltage_l3_v;
  $meter_model = $decoded->meter_model;
  $active_tariff = $decoded->active_tariff;
  
  if ($active_power_w < 0) {
    echo "<b>Verbruik: </b><span style=\"color:green;\">$active_power_w Watt</span><br/>";
  } else {
    echo "<b>Verbruik: </b>$active_power_w Watt<br/>";
  }

  if ($active_tariff > 1) {
    echo "<td>Huidig tarief: <span style=\"color:red;\">Hoog</span></td><br>";
  } else {
    echo "<td>Huidig tarief: <span style=\"color:green;\">Laag</span></td><br>";
  }

echo "<b>Meter Model: </b>$decoded->meter_model<br/></b>";

// Display import/export/total data in table
echo "<table border='1'><tr><th></th><th> Import </th><th> Export</th></tr>";
echo "<tr> <td>T1</td>";
echo "<td> <b style='color:red;'>$decoded->total_power_import_t1_kwh</b></td>";
echo "<td> <b style='color:green;'>$decoded->total_power_export_t1_kwh</b></td>";
echo "</tr>";
echo "<tr><td>T2</td>";
echo "<td> <b style='color:red;'>$decoded->total_power_import_t2_kwh</b></td>";
echo "<td> <b style='color:green;'>$decoded->total_power_export_t2_kwh</b></td>";
echo "</tr>";
echo "<tr><td>Totaal</td>";
echo "<td> <b style='color:red;'>$decoded->total_power_import_kwh</b></td>";
echo "<td> <b style='color:green;'>$decoded->total_power_export_kwh</b></td>";
echo "</tr>";    
echo "</table>";

// Display Fase/Watt/Voltage/Ampere in a table
echo "<table border='1'><tr><th>Fase </th><th> Watt </th><th> Volt</th><th> Ampere</th></tr>";
echo "<tr> <td>L1</td>";

  if ($active_power_l1_w < 0) {
    echo "<td><span style=\"color:green;\">$active_power_l1_w</span></td>";
  } else {
    echo "<td>$active_power_l1_w</td>";
  }  
  
  if ($active_voltage_l1_v > 240) {
    echo "<td><span style=\"color:red;\">$active_voltage_l1_v</span></td>";
  } else {
    echo "<td>$active_voltage_l1_v</td>";
  }

echo "<td> $decoded->active_current_l1_a</td>";
echo "</tr>";
echo "<tr><td>L2</td>";
  if ($active_power_l2_w < 0) {
    echo "<td><span style=\"color:green;\">$active_power_l2_w</span></td>";
  } else {
    echo "<td>$active_power_l2_w</td>";
  }

  if ($active_voltage_l2_v > 240) {
    echo "<td><span style=\"color:red;\">$active_voltage_l2_v</span></td>";
  } else {
    echo "<td>$active_voltage_l2_v</td>";
  }
  
echo "<td> $decoded->active_current_l2_a</td>";
echo "</tr>";   
echo "<tr><td>L3</td>";
  if ($active_power_l3_w < 0) {
    echo "<td><span style=\"color:green;\">$active_power_l3_w</span></td>";
  } else {
    echo "<td>$active_power_l3_w</td>";
  }
  if ($active_voltage_l3_v > 240) {
    echo "<td><span style=\"color:red;\">$active_voltage_l3_v</span></td>";
  } else {
    echo "<td>$active_voltage_l3_v</td>";
  }
echo "<td> $decoded->active_current_l3_a</td>";
echo "</tr>";   
echo "</table>";

echo "<b>Stroomuitval: </b>$decoded->any_power_fail_count   <br/>";
echo "<b>Stroomuitval lang: </b>$decoded->long_power_fail_count <br/>";
}
?>

Acties:
  • +4 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 21:45
Matched: curl, data, http, api, v1
Onlangs met het voorbeeld van @Cap aan de slag gegaan om te kunnen uploaden naar Mindergas: Cap in "HomeWizard Energy - De modulaire WiFi P1 meter" De betreffende post is al weer een aantal jaren oud, ondertussen is de URL van Mindergas gewijzigd ('/gas_meter_readings' naar '/meter_readings') en op de Edgerouter X waar ik dit op heb draaien is geen wget aanwezig, dus ik heb het aangepast naar curl.

Onderstaand script laat ik elke dag vlak na middernacht draaien. Werkt prima.

Mindergas.nl uploader

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
# name: mindergas-upload
# description: upload HomeWizard Wi-Fi P1 meter gas meterstand to Mindergas.nl website
# Script inspired by: https://gathering.tweakers.net/forum/list_message/66069248#66069248

youripaddress="192.168.1.15"
yourapikey="yourtoken"

# get current energy data from P1 Meter
energydata=$(curl -s "http://"$youripaddress"/api/v1/data")
meterstand=$(echo "$energydata" | sed 's/,/\n/g' | grep "total_gas_m3" | cut -d: -f2)

#Use current time MINUS one hour, so we get yesterdays date (script is supposed to run shortly after midnight)
datestamp=$(date -D '%s' -d $(( $(date +%s) - 3600 )) +"%Y-%m-%d")

# post meterstand to Mindergas.nl site
status=$(curl --write-out %{http_code} -v -H "Content-Type:application/json" -H "AUTH-TOKEN:$yourapikey" -H "Connection: close" -d '{"date":"'$datestamp'", "reading": "'$meterstand'" }' https://www.mindergas.nl/api/meter_readings)
#echo $status

Acties:
  • +2 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 21:45
Matched: curl, data, http, api, v1
En ik ben ook aan de gang geweest met PVOutput, er waren in dit topic wel wat scriptvoorbeelden te vinden, maar die gingen uit van een situatie met alléén de P1-meter voor zover ik kon zien.

In dit geval gaat het om de P1-meter én een kWh-meter die de zonnepanelen meet. Op die manier kun je bruto/netto mooi uit elkaar houden. Met alleen de P1-meter kan dat niet, zodra de zon gaat schijnen kun je niet goed meer zien wat je eigen verbruik is, omdat de slimme meter alleen hetgene ziet wat er dáárna nog wordt teruggeleverd.

Dit script werkt voor 99%, op sommige dagen schiet ineens de 'energy used' naar extreme waardes (van 1,860kWh naar 2140,919kWh). Ik denk ergens een foutje in de berekening (regel 35?) en/of met omzetten kWh > Wh.

Aangezien het een DSMR5 meter is valt de netspanning ook uit te lezen, ik stuur de spanning van fase L2 mee, omdat daar de zonnepanelen op zijn aangesloten. Handig om te loggen i.v.m. toekomstige netcongestie problematiek (nu gelukkig geen last van).

PVOutput.org uploader (P1 + losse kWh-meter gecombineerd)

Bash:
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/bash
# name: pvoutput-upload
# description: upload HomeWizard Wi-Fi P1 meter energy data to PVOutput.org website
# Script inspired by: https://gathering.tweakers.net/forum/list_message/66028460#66028460

p1meterip="192.168.1.15"
kwhmeterip="192.168.1.16"
yoursid="replaceme"
yourapikey="replaceme"

# Get current energy data from P1 Meter, convert kWh meter data to Wh (remove decimal point)
p1meterdata=$(curl -s "http://$p1meterip/api/v1/data")
pwr=$(echo "$p1meterdata" | sed 's/,/\n/g' | grep "active_power_w" | cut -d: -f2)
p1=$(echo "$p1meterdata" | sed 's/,/\n/g' | grep "total_power_import_t1_kwh" | cut -d: -f2 | tr -d '.')
p2=$(echo "$p1meterdata" | sed 's/,/\n/g' | grep "total_power_import_t2_kwh" | cut -d: -f2 | tr -d '.')
n1=$(echo "$p1meterdata" | sed 's/,/\n/g' | grep "total_power_export_t1_kwh" | cut -d: -f2 | tr -d '.')
n2=$(echo "$p1meterdata" | sed 's/,/\n/g' | grep "total_power_export_t2_kwh" | cut -d: -f2 | tr -d '.')
voltage=$(echo "$p1meterdata" | sed 's/,/\n/g' | grep "active_voltage_l2_v" | cut -d: -f2 ) #| tr -d '.')

#P1 Meter drops trailing decimal zero's, so add them back and after cut excess zero's if preset (cut to 8 digits)
p1=0"$p1"000
p1="${p1:0:8}"
p2=0"$p2"000
p2="${p2:0:8}"
n1=0"$n1"000
n1="${n1:0:8}"
n2=0"$n2"000
n2="${n2:0:8}" 

# Get current energy data from P1 Meter, convert kWh meter data to Wh (remove decimal point)
kwhmeterdata=$(curl -s "http://$kwhmeterip/api/v1/data")
ps0=$(echo "$kwhmeterdata" | sed 's/,/\n/g' | grep "active_power_w" | cut -d: -f2 ) #| tr -d '.')
cs0=$(echo "$kwhmeterdata" | sed 's/,/\n/g' | grep "total_power_export_kwh" | cut -d: -f2 | tr -d '.')

#Remove decimal zeroes
cs0=$(echo "$cs0" | sed 's/^0*//')

#Multiply by -1 as Homewizard represents it as a negative number when solar panels are connected
ps0=$(printf "%.0f" $ps0 | awk '{print int($1)}')
# Make the number positive
ps0=$((ps0 * -1))

imp=$(($p1+$p2))
exp=$(($n1+$n2))
bruto_cnt=$(($imp+($cs0-$exp)))
bruto_pwr=$(($pwr+$ps0))

# Set date and time variables
datestamp=$(date '+%Y%m%d')
timestamp=$(date '+%H:%M')

# Post energy and power value to PVOutput site
# The c1=1 flag sets energy as lifetime value, consumption, and generation energy is reset to 0 at the start of the day
status=$(curl --write-out %{http_code} -v \
-d "d=$datestamp" \
-d "t=$timestamp" \
-d "v1=$cs0" \
-d "v2=$ps0" \
-d "v3=$bruto_cnt" \
-d "v4=$bruto_pwr" \
-d "v6=$voltage" \
-d "c1=1" \
-H "X-Pvoutput-Apikey: $yourapikey" \
-H "X-Pvoutput-SystemId: $yoursid" \
-H "Connection: close" \
"https://pvoutput.org/service/r2/addstatus.jsp")
#echo $status


De variabelen zoals 'ps0', 'pwr' zijn afgeleid van de Youless LS120, daar was ik al bekend mee en vond ik op deze manier wat makkelijker lezen.

[ Voor 106% gewijzigd door ThinkPad op 18-05-2024 21:30 ]


Acties:
  • 0 Henk 'm!

  • jvdlely
  • Registratie: Mei 2012
  • Laatst online: 20:29
Matched: curl, data, http, api, v1
Hoi allemaal, ik heb ook een raar probleem met mijn HW P1 meter. De situatie:
- HW P1 geinstalleerd in DSMR5 meter, aan Wifi gehangen. Ring is groen, ong 80% wifi sigaal volgens HW app
- Wifi netwerk is een mesh netwerk (met TP Link Deco's)
- al sinds 2 maanden ook in HomeAssistant geintergreerd (Energy dashboard)
- In de app is de P1 meter prima te zien (net zoals 2 Energy sockets en watermeter)

Vanmiddag merkte ik dat wanneer ik op de laptop curl http://<ip-adres-p1-meter>/api/v1/data doe, krijg ik 'connection reset'
P1 meter is dan ook niet meer te pingen
Ook EVCC (docker applicatie voor het laden van auto) kan geen connectie met de P1 meter krijgen:

[main ] FATAL 2025/03/05 17:28:52 meter [my_grid] cannot create meter 'my_grid': cannot create meter type 'template': cannot create meter type 'homewizard': Get "http://192.168.178.161/api": read tcp 172.19.0.2:33148->192.168.178.161:80: read: connection reset by peer

Ondertussen blijft de p1 meter het in de HW app gewoon doen, ook in HomeAssistant is er niks aan de hand. Alleen nieuwe connecties lukken niet. Hieronder nog een screenshot van Wireshark: eerst pingen, dan connection reset

Haal ik de P1 meter uit de slimme meter en dan weer terugdoen:
Ring knippert even groen, dan weer solid groen. En an werkt het curl commando weer en is weer te pingen.... Ook EVCC ziet de P1 meter weer.
Dit duurt een poosje en daarna is het weer over en uit met curl, EVCC geeft een fout omdat de P1 meter niet gevonden kan worden. En blijft wel werken in de HW app en HomeAssistant.

Snap er niks van.. Iemand een idee wat ik over het hoofd zie?

Afbeeldingslocatie: https://tweakers.net/i/j3YRXSWcfgU9DIoxqvBr7s1BiEk=/800x/filters:strip_exif()/f/image/Z17LvgXkW8gbll3lK2BRguWT.png?f=fotoalbum_large

EV3 Plus + ADAS LR BlueFro, Zaptec Go 2 laadpaal aangestuurd door EVCC


Acties:
  • +1 Henk 'm!

  • RiDo78
  • Registratie: Juli 2002
  • Niet online
Matched: curl, data, http, api, v1
jvdlely schreef op woensdag 5 maart 2025 @ 18:07:
Hoi allemaal, ik heb ook een raar probleem met mijn HW P1 meter. De situatie:
- HW P1 geinstalleerd in DSMR5 meter, aan Wifi gehangen. Ring is groen, ong 80% wifi sigaal volgens HW app
- Wifi netwerk is een mesh netwerk (met TP Link Deco's)
- al sinds 2 maanden ook in HomeAssistant geintergreerd (Energy dashboard)
- In de app is de P1 meter prima te zien (net zoals 2 Energy sockets en watermeter)

Vanmiddag merkte ik dat wanneer ik op de laptop curl http://<ip-adres-p1-meter>/api/v1/data doe, krijg ik 'connection reset'
P1 meter is dan ook niet meer te pingen
Ook EVCC (docker applicatie voor het laden van auto) kan geen connectie met de P1 meter krijgen:

[main ] FATAL 2025/03/05 17:28:52 meter [my_grid] cannot create meter 'my_grid': cannot create meter type 'template': cannot create meter type 'homewizard': Get "http://192.168.178.161/api": read tcp 172.19.0.2:33148->192.168.178.161:80: read: connection reset by peer

Ondertussen blijft de p1 meter het in de HW app gewoon doen, ook in HomeAssistant is er niks aan de hand. Alleen nieuwe connecties lukken niet. Hieronder nog een screenshot van Wireshark: eerst pingen, dan connection reset

Haal ik de P1 meter uit de slimme meter en dan weer terugdoen:
Ring knippert even groen, dan weer solid groen. En an werkt het curl commando weer en is weer te pingen.... Ook EVCC ziet de P1 meter weer.
Dit duurt een poosje en daarna is het weer over en uit met curl, EVCC geeft een fout omdat de P1 meter niet gevonden kan worden. En blijft wel werken in de HW app en HomeAssistant.

Snap er niks van.. Iemand een idee wat ik over het hoofd zie?

[Afbeelding]
Heb je toevallig HW-thuisbatterijen?
En hoe vaak trap je dat curl-scriptje af?
En weet je zeker dat curl de sessies niet ergens open houdt (netstat -anpt | grep -i wait)

Want het is een bekend probleem dat de P1 meter maar 4 API-connecties tegelijk aan kan. Dus als je vier batterijen hebt, is de P1 meter al redelijk 'vol'. Ook als je meerdere curl verbindingen tegelijk hebt lopen (ook al zijn ze aan het wachten) kun je de P1 meter vol krijgen. Data zal over bestaande verbindingen (HA) blijven lopen maar nieuwe verbindingen kunnen niet gelegd worden.
Pagina: 1

Let op:
Voor vragen en discussie rondom de Plug-In Battery kan je terecht in Het HomeWizard Plug-In Battery topic