Kan iemand mij opweg helpen om de gegevens van een slimme meter uit Domoticz te halen en naar EmonCMS te uploaden? Ik stel de vraag hier omdat het zelfde probleem speelt met bij youless, dus ik vond het minder goed passen in 'slimme meter uitlezen'.
Via een voorbeeld op https://plus.google.com/+JamesLodge/posts/WhLq6Ne7z7A is het me gelukt met de temperaturen van de CV die ik met een Wemos naar Domoticz stuur, maar het power script blijft problemen geven.
Als ik een string pak (bijvoorbeeld "Counter", waar alleen getallen in staan lukt het (maar niet 'achter de komma', dus op EmonCMS zie ik 3954 ipv 3954.080), maar zodra ik een string heb waar ook tekst in staat gaat het mis, zoals bij "CounterDeliv", dan staat er een 0.
Met http://192.168.2.220:8084/json.htm?type=devices&rid=336 krijg ik de volgende output uit Domoticz voor de power meter: (beetje ingekort)
{
"ActTime" : 1494170625,
"ServerTime" : "2017-05-07 17:23:45",
"Sunrise" : "06:01",
"Sunset" : "21:16",
"result" : [
{
...
"Counter" : "3954.080",
"CounterDeliv" : "1641.754",
"CounterDelivToday" : "2.258 kWh",
"CounterToday" : "4.224 kWh",
"CustomImage" : 0,
"Data" : "2068097;1885983;470465;1171289;3392;0",
...
"Usage" : "3392 Watt",
"UsageDeliv" : "0 Watt",
...
De getallen achter de string "Data" lijken mij het meest interessant, hoe krijg ik hier 6 waardes uit die ik naar EmonCMS kan uploaden? De volgende URL opbouw doet wat ik wil:
http://80.243.190.58/emon...ut/post.json?node=2&json={L1:2068097,L2:1885983,TL1:470533,TL2:1171289,RTL:237,RTTL:0}&apikey=blablabla
Op https://emoncms.org/site/api#input staan een aantal manieren om data in EmonCMS te krijgen.
Ik heb eerst dit script geprobeerd (uit de eerste link hierboven):
<?php
$i = 0;
while ($i <=3) {
getMainHousePower();
sleep(15);
$i++;
}
function getMainHousePower(){
$text = file_get_contents("http://192.168.2.220:8084/json.htm?type=devices&rid=336");
$json = json_decode($text, true);
$emon = $json['result']['0']['Data']['0'];
$emon .= $json['result']['0']['Data']['1'];
$emon .= $json['result']['0']['Data']['2'];
if ( $json['result']['0']['Data']['3'] != " "){
$emon .= $json['result']['0']['Data']['3'];
}
else{
}
$url = "80.243.190.58/emoncms/input/post.json?node=2&json={power:" . $emon . "}&apikey=blablabla";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
}
?>
De output op de CLI is dan:
root@DS2:/volume1/@appstore/domoticz/var/scripts# php p1.php
####################
# POWER SCRIPT #
####################
okokokokroot@DS2:/volume1/@appstore/domoticz/var/scripts#
Op EmonCMS komt er dan één entry bij de inputs:
POWER 2068
Ik heb daarna het temperatuurscript uit bovenstaande link omgebouwd en dat werkt iets beter:
<?php
$i = 0;
while ($i <=3) {
getCounter();
getCounterDeliv();
getCounterDelivToday();
getCounterToday();
getUsage();
getUsageDeliv();
sleep(15);
$i++;
}
function getCounter() {
$text = file_get_contents("http://192.168.2.220:8084/json.htm?type=devices&rid=336");
$json = json_decode($text, true);
$emon = $json['result']['0']['Counter'];
$url = "80.243.190.58/emoncms/input/post.json?node=1&json={Counter:" . $emon . "}&apikey=blablabla";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
}
function getCounterDeliv() {
$text = file_get_contents("http://192.168.2.220:8084/json.htm?type=devices&rid=336");
$json = json_decode($text, true);
$emon = $json['result']['0']['CounterDeliv'];
$url = "80.243.190.58/emoncms/input/post.json?node=1&json={Counterdeliv:" . $emon . "}&apikey=blablabla";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
}
*Knip*: meer van hetzelfe.
Output CLI:
root@DS2:/volume1/@appstore/domoticz/var/scripts# php p3.php
####################
# power SCRIPT#
####################
okokfalsefalsefalsefalse
In EmonCMS komen dan de volgende inputs beschikbaar (tot de komma):
Counter 3995
CounterDeliv 1642
Mijn google skills laten me verder in de steek, ik heb geen php of andere programmeerervaring....
Ik denk dat ik met een voorbeeld hoe de 6 waardes gescheiden door een ';'kan splitsen en als 6 waardes kan uploaden naar EmonCMS ook de zonnepalen voor elkaar krijg
Via een voorbeeld op https://plus.google.com/+JamesLodge/posts/WhLq6Ne7z7A is het me gelukt met de temperaturen van de CV die ik met een Wemos naar Domoticz stuur, maar het power script blijft problemen geven.
Als ik een string pak (bijvoorbeeld "Counter", waar alleen getallen in staan lukt het (maar niet 'achter de komma', dus op EmonCMS zie ik 3954 ipv 3954.080), maar zodra ik een string heb waar ook tekst in staat gaat het mis, zoals bij "CounterDeliv", dan staat er een 0.
Met http://192.168.2.220:8084/json.htm?type=devices&rid=336 krijg ik de volgende output uit Domoticz voor de power meter: (beetje ingekort)
{
"ActTime" : 1494170625,
"ServerTime" : "2017-05-07 17:23:45",
"Sunrise" : "06:01",
"Sunset" : "21:16",
"result" : [
{
...
"Counter" : "3954.080",
"CounterDeliv" : "1641.754",
"CounterDelivToday" : "2.258 kWh",
"CounterToday" : "4.224 kWh",
"CustomImage" : 0,
"Data" : "2068097;1885983;470465;1171289;3392;0",
...
"Usage" : "3392 Watt",
"UsageDeliv" : "0 Watt",
...
De getallen achter de string "Data" lijken mij het meest interessant, hoe krijg ik hier 6 waardes uit die ik naar EmonCMS kan uploaden? De volgende URL opbouw doet wat ik wil:
http://80.243.190.58/emon...ut/post.json?node=2&json={L1:2068097,L2:1885983,TL1:470533,TL2:1171289,RTL:237,RTTL:0}&apikey=blablabla
Op https://emoncms.org/site/api#input staan een aantal manieren om data in EmonCMS te krijgen.
Ik heb eerst dit script geprobeerd (uit de eerste link hierboven):
<?php
$i = 0;
while ($i <=3) {
getMainHousePower();
sleep(15);
$i++;
}
function getMainHousePower(){
$text = file_get_contents("http://192.168.2.220:8084/json.htm?type=devices&rid=336");
$json = json_decode($text, true);
$emon = $json['result']['0']['Data']['0'];
$emon .= $json['result']['0']['Data']['1'];
$emon .= $json['result']['0']['Data']['2'];
if ( $json['result']['0']['Data']['3'] != " "){
$emon .= $json['result']['0']['Data']['3'];
}
else{
}
$url = "80.243.190.58/emoncms/input/post.json?node=2&json={power:" . $emon . "}&apikey=blablabla";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
}
?>
De output op de CLI is dan:
root@DS2:/volume1/@appstore/domoticz/var/scripts# php p1.php
####################
# POWER SCRIPT #
####################
okokokokroot@DS2:/volume1/@appstore/domoticz/var/scripts#
Op EmonCMS komt er dan één entry bij de inputs:
POWER 2068
Ik heb daarna het temperatuurscript uit bovenstaande link omgebouwd en dat werkt iets beter:
<?php
$i = 0;
while ($i <=3) {
getCounter();
getCounterDeliv();
getCounterDelivToday();
getCounterToday();
getUsage();
getUsageDeliv();
sleep(15);
$i++;
}
function getCounter() {
$text = file_get_contents("http://192.168.2.220:8084/json.htm?type=devices&rid=336");
$json = json_decode($text, true);
$emon = $json['result']['0']['Counter'];
$url = "80.243.190.58/emoncms/input/post.json?node=1&json={Counter:" . $emon . "}&apikey=blablabla";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
}
function getCounterDeliv() {
$text = file_get_contents("http://192.168.2.220:8084/json.htm?type=devices&rid=336");
$json = json_decode($text, true);
$emon = $json['result']['0']['CounterDeliv'];
$url = "80.243.190.58/emoncms/input/post.json?node=1&json={Counterdeliv:" . $emon . "}&apikey=blablabla";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
}
*Knip*: meer van hetzelfe.
Output CLI:
root@DS2:/volume1/@appstore/domoticz/var/scripts# php p3.php
####################
# power SCRIPT#
####################
okokfalsefalsefalsefalse
In EmonCMS komen dan de volgende inputs beschikbaar (tot de komma):
Counter 3995
CounterDeliv 1642
Mijn google skills laten me verder in de steek, ik heb geen php of andere programmeerervaring....
Ik denk dat ik met een voorbeeld hoe de 6 waardes gescheiden door een ';'kan splitsen en als 6 waardes kan uploaden naar EmonCMS ook de zonnepalen voor elkaar krijg

[ Voor 17% gewijzigd door Fasthook op 07-05-2017 22:50 ]