hardware:controllers:youless
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
youless [2014/05/29 20:13] – code php with header wf_bitplan.com | hardware:controllers:youless [2018/01/25 16:22] (aktuell) – code jau | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ==== You less device ==== | + | ===== Youless |
- | Postfossil BV from the Netherlands: | + | Postfossil BV from the Netherlands: |
- | * http:// | + | |
- | offers a meter reading device at: | + | |
- | * http:// | + | |
- | In germany the device is available via: | + | |
- | * http:// | + | |
- | and can be ordered via Amazon at | + | |
- | * http:// | + | |
- | although the device is offered much cheaper via the vendor in the netherlands. | + | |
- | The device has a lan interface and can be used with analog ferraris meters as well as digital S0 input. | + | |
- | === manual === | + | |
- | an english manual can be found at: | + | |
- | * http:// | + | |
- | ==== You less software ==== | + | offers |
- | This is a screen shot of the web interface offered: | + | |
- | {{:playground:youlessscreenshot.png?400|}} | + | In germany the device is available via: http://www.bg-etech.de/ |
- | ==== Connection to volkszaehler ==== | + | English manual can be found at: http://www.bg-etech.de/images/YouLess/ |
- | I (Wolfgang - wf (at) bitplan.com) am currently trying it out and intending to connect it to the volkszaehler solution. I'll post any news here. | + | |
- | === data format === | + | |
- | * http://wiki.td-er.nl/index.php? | + | |
- | has information on how to access the device | + | |
- | === php code for posting to middleware === | + | The device has a lan interface |
- | The following code is an attempt to read data from the youless logger | + | |
- | and post it to the volkszaehler middlware. As of version 1.8 it's working in my (Wolfgang' | + | |
- | You might want to modify: | + | This is a screen shot of the web interface offered: |
- | * $url - the url to read the youless from | + | |
- | * $vzurl | + | |
- | * $cuuid_pwr | + | |
- | * $cuuid_cnt | + | |
- | * $delay | + | |
- | * $cnt_modulo - how often to send the kwH reading default: on every 12th reading / once per minute | + | |
+ | {{: | ||
- | To use code copy the two script parts to a " | + | ===== Connection |
- | < | + | |
- | php -f yl.php | + | |
- | </ | + | |
- | the output should look like: | + | === Data format === |
+ | Information on how to access | ||
+ | |||
+ | === Example === | ||
+ | In my environment the youless device has the ip address 192.168.0.12 | ||
+ | Using the url http:// | ||
+ | the json response is: | ||
< | < | ||
- | 2014-05-28 21:05:07 1,518 kWh 1304 Watt | + | {" |
- | 2014-05-28 21:05:12 1,520 kWh 1338 Watt | + | |
- | 2014-05-28 21:05:17 1,522 kWh 1318 Watt | + | |
</ | </ | ||
+ | The json encoded information has the current meter count / kWh in " | ||
+ | This information needs to be converted to volkszaehler format and posted to the middleware - this is what the code below does. | ||
+ | === PHP-Code for posting to middleware === | ||
+ | The following code is an attempt to read data from the youless logger and post it to the volkszaehler middleware. As of version (2017/06 June) it's working in my environment. | ||
- | For any feedback please contact me at wf (at) bitplan.com. Enjoy ... | + | There are three files used: |
+ | * php file: vzapihelper.php | ||
+ | * php file: yl.php | ||
+ | * sh file: yl.sh (the only file you have to enter individual code. UUIDs of your VZ-Channels an the IP adress of your youless device) | ||
- | <code php|yl.php> | + | === creating the 3 used files === |
+ | to edit or create a file type the following in your console of your volkszaehler raspberry or what else: | ||
+ | < | ||
+ | the file " | ||
+ | <code php yl.php> | ||
<?php | <?php | ||
/** | /** | ||
* read meter data from youless device | * read meter data from youless device | ||
* and post it to volkszaehler | * and post it to volkszaehler | ||
- | * $Header: /home/ | + | * $Header: /etc/yl.php,v 1.14 2014/06/01 10:40:37 wf Exp wf $ |
*/ | */ | ||
+ | |||
// common code for reading and posting | // common code for reading and posting | ||
require __DIR__.'/ | require __DIR__.'/ | ||
- | + | ||
/** | /** | ||
* read the meter | * read the meter | ||
Zeile 69: | Zeile 57: | ||
| | ||
$json=readUrl($url); | $json=readUrl($url); | ||
+ | |||
// get the meter reading | // get the meter reading | ||
$meter=json_decode($json, | $meter=json_decode($json, | ||
Zeile 77: | Zeile 65: | ||
return $meter; | return $meter; | ||
} | } | ||
- | + | ||
/** | /** | ||
* transfer youless reading to vz middleware | * transfer youless reading to vz middleware | ||
Zeile 95: | Zeile 83: | ||
// if you have an analog meter you might want to use and show this | // if you have an analog meter you might want to use and show this | ||
// $lvl=$meter[" | // $lvl=$meter[" | ||
+ | |||
// convert to php compatible value | // convert to php compatible value | ||
| | ||
// calculate Wh from kWh | // calculate Wh from kWh | ||
- | | + | |
- | + | ||
// get human readable time stamp | // get human readable time stamp | ||
- | | + | |
+ | |||
// display progress (comment if you use this in cron job) | // display progress (comment if you use this in cron job) | ||
- | echo "$now $cnt kWh $pwr Watt\n"; | + | printf("%s YL: % 5d Watt % 10.3f kwH\n", |
// post data to middleware according to: | // post data to middleware according to: | ||
// http:// | // http:// | ||
+ | |||
# first post the power reading in Watt | # first post the power reading in Watt | ||
| | ||
+ | |||
# then the energy reading in Wh | # then the energy reading in Wh | ||
if ($post_cnt) { | if ($post_cnt) { | ||
| | ||
} | } | ||
+ | |||
} | } | ||
- | + | ||
- | // modify the follwing parts to your needs | + | $loop=0; |
- | // the url to read from | + | // possible command line options |
- | $url="http:// | + | // --loop --url= --vzurl= --cuuid_pwr= --cuuid_cnt= --delay= --cnt_modulo= |
- | $vzurl="http://capri/vz/middleware.php/ | + | $longopts=array("loop"," |
- | | + | $shortopts=""; |
+ | $options=getopt($shortopts, | ||
+ | | ||
+ | $url=checkoption(" | ||
+ | | ||
+ | | ||
// channel uuids | // channel uuids | ||
// power (watts) | // power (watts) | ||
- | $cuuid_pwr=" | + | $cuuid_pwr=checkoption("cuuid_pwr",$options); |
// energy (kWh) | // energy (kWh) | ||
- | $cuuid_cnt=" | + | $cuuid_cnt=checkoption("cuuid_cnt",$options); |
- | + | ||
- | // how often to post to middlewhere | + | |
- | | + | |
- | $cnt_modulo=12; // how many delays for posting a kwH reading | + | if ($doloop) { |
- | + | | |
- | $loop=0; | + | // delay in seconds between posts |
- | | + | $delay=intval(checkoption(" |
- | $loop++; | + | |
+ | | ||
+ | $maxloop=2147483647; // MAXINT | ||
+ | | ||
+ | $maxloop=1; | ||
+ | $cnt_modulo=1; | ||
+ | } | ||
+ | |||
+ | // run once or in a loop | ||
+ | while ($loop< | ||
youless2vz($url, | youless2vz($url, | ||
- | sleep($delay); | + | |
+ | | ||
+ | } | ||
+ | $loop++; | ||
} | } | ||
- | | + | |
?> | ?> | ||
</ | </ | ||
- | <code php|vzapihelper.php> | + | |
+ | now do the same for the second file, the vzapihelper.php. Type the following in your console: | ||
+ | < | ||
+ | Insert the following code and press " | ||
+ | <code php vzapihelper.php> | ||
<?php | <?php | ||
/** | /** | ||
* vzapi helper functions | * vzapi helper functions | ||
- | * $Header: /home/ | + | * $Header: /etc/ |
*/ | */ | ||
+ | |||
/** | /** | ||
* get a curl channel | * get a curl channel | ||
Zeile 163: | Zeile 172: | ||
// Set the url | // Set the url | ||
curl_setopt($ch, | curl_setopt($ch, | ||
+ | |||
return $ch; | return $ch; | ||
} | } | ||
- | | + | |
/** | /** | ||
* read the given url | * read the given url | ||
Zeile 173: | Zeile 182: | ||
function readUrl($url) | function readUrl($url) | ||
$ch=curl($url); | $ch=curl($url); | ||
- | | + | |
// Execute | // Execute | ||
$result=curl_exec($ch); | $result=curl_exec($ch); | ||
return $result; | return $result; | ||
} | } | ||
- | | + | |
/** | /** | ||
* post to the given url | * post to the given url | ||
Zeile 195: | Zeile 204: | ||
return $result; | return $result; | ||
} | } | ||
+ | |||
/** | /** | ||
* post data to vz middleware | * post data to vz middleware | ||
Zeile 205: | Zeile 214: | ||
// post data to middleware according to: | // post data to middleware according to: | ||
// http:// | // http:// | ||
+ | |||
// adapt timestamp to volkszaehler conventions | // adapt timestamp to volkszaehler conventions | ||
$timestamp=time()*1000; | $timestamp=time()*1000; | ||
+ | |||
# first | # first | ||
| | ||
Zeile 217: | Zeile 226: | ||
} | } | ||
} | } | ||
+ | |||
+ | /** | ||
+ | * check that option $opt is available in $options | ||
+ | * return the value if available | ||
+ | */ | ||
+ | function checkoption($opt, | ||
+ | if (array_key_exists($opt, | ||
+ | return $options[$opt]; | ||
+ | else | ||
+ | die(" | ||
+ | } | ||
+ | |||
?> | ?> | ||
+ | </ | ||
+ | The last file ist the yl.sh. The script automatically will be started from the crontab (Taskmgr) of your linux system, so that the youless device is also working after a reboot. | ||
+ | |||
+ | Type the following in your console: | ||
+ | < | ||
+ | Insert the following code and press " | ||
+ | <code bash yl.sh> | ||
+ | #!/bin/bash | ||
+ | while true | ||
+ | do | ||
+ | php /etc/yl.php \ | ||
+ | --url=" | ||
+ | --vzurl=" | ||
+ | --cuuid_pwr=" | ||
+ | --cuuid_cnt=" | ||
+ | --delay=15 \ | ||
+ | --cnt_modulo=12 \ | ||
+ | --loop | ||
+ | done | ||
+ | exit 0 | ||
</ | </ | ||
+ | |||
+ | Here is a statement of the parameter | ||
+ | * $url - the url to read the youless from | ||
+ | * $vzurl | ||
+ | * $cuuid_pwr | ||
+ | * $cuuid_cnt | ||
+ | * $delay | ||
+ | * $cnt_modulo - how often to send the kwH reading default: on every 12th reading / once per minute | ||
+ | |||
+ | To make the sh-file executable for crontab (Taskmgr) you have to give the rights. Type the following into your console: | ||
+ | < | ||
+ | sudo chmod +x /etc/yl.sh | ||
+ | </ | ||
+ | |||
+ | To edit the crontab type | ||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | and add the following line on the bottom of the file, before the line "exit 0": | ||
+ | < | ||
+ | bash / | ||
+ | </ | ||
+ | |||
+ | So that's it. now it should work. | ||
+ | |||
+ | |||
+ | You also can test your configuration if you enter the following code in your console: | ||
+ | < | ||
+ | php /etc/yl.php \ | ||
+ | --url=" | ||
+ | --vzurl=" | ||
+ | --cuuid_pwr=" | ||
+ | --cuuid_cnt=" | ||
+ | --delay=15 \ | ||
+ | --cnt_modulo=12 \ | ||
+ | --loop | ||
+ | done | ||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | the output should look like: | ||
+ | < | ||
+ | 2017-04-29 10:59:00 YL: 640 Watt | ||
+ | 2017-04-29 10:59:05 YL: 639 Watt | ||
+ | 2017-04-29 10:59:10 YL: 639 Watt | ||
+ | </ | ||
+ | |||
+ | |||
+ | For any feedback please contact wf (at) bitplan.com or tiedi (at) web.de. Enjoy ... | ||
+ | |||
+ | |||
+ | [[https:// | ||
+ | |||
+ | |||
+ |
hardware/controllers/youless.1401387219.txt.gz · Zuletzt geändert: 2014/05/29 20:13 von wf_bitplan.com