Zitat von hhhc
Beitrag anzeigen
btw. ich bin auch auf develop
// 2) timestamp is in milliseconds, harmonize last 3 figures to 000 var newTimestamp = timestamp.toString().substring(0, 9).concat('0000');
var newTimestamp = timestamp.toString().substring(0, 8).concat('00000');
<h3>Stromverbrauch pro Stunde (kwh)</h3> {{ plot.stacked('pstunde', 'zaehler1.verbrauch.stuendlich', 'max', '48h', '', '', '', 'Haushalt', 'true', '', 'column', '48', false) }} <h3>Stromverbrauch pro Tag (kwh)</h3> {{ plot.stacked('ptag', 'zaehler1.verbrauch.gestern', 'avg', '8d', '', '', '', 'Haushalt', 'true', '', 'column', '8', true) }} <h3>Kosten pro Tag (EUR)</h3> {{ plot.stacked('pkost', ['zaehler1.kosten.gestern', 'zaehler1.kosten.gestern.weekly_avg'], 'max', '8d', '', '', '', ['Haushalt', 'Wochendurchschnitt'], 'true', '', ['column', 'line'], '8', true) }}
<?php
// Install basic Ubuntu 14.04 image on Raspberry PI
// Install php 5
// Copy this script to the home folder and run in crontab
// run with parameter "all" to send all parameters or call without any parameter to just send the current power (16.7)
//
// */15 * * * * php read.php all
// * * * * * php read.php
/*
[ehz]
[[haus]]
type = num
sqlite = yes
nw = yes
[[wp_tag]]
type = num
sqlite = yes
nw = yes
[[wp_nacht]]
type = num
nw = yes
sqlite = yes
*/
$urlBase = 'udp://192.168.2.7:2727';
$devices = array(
'/dev/ttyUSB0' => array(
'1.8.1(' => 'ehz.haus',
'16.7(' => 'ehz.haus.leistung_aktuell'
),
'/dev/ttyUSB1' => array(
'1.8.1(' => 'ehz.wp.tag',
'1.8.2(' => 'ehz.wp.nacht',
'16.7(' => 'ehz.wp.gesamt.leistung_aktuell'
)
);
error_reporting(E_ALL);
function setSerial($device,$bps) {
echo "setze Schnittstelle auf $bps bps\n";
$output=array();
$returnVar=0;
$cmd="stty $bps -F $device";
exec($cmd, $output,$returnVar);
echo "Ergebnis vom Setzen der seriellen Schnittstelle per stty (2):\n";
print_r($output);
} // function initSerial
function setSerialInitial($device,$bps) {
echo "setze Schnittstelle auf $bps bps\n";
$output=array();
$returnVar=0;
$cmd="stty $bps -F $device 1:4:da7:a30:3:1c:7f:15:4:10:0:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0";
exec($cmd, $output,$returnVar);
echo "Ergebnis vom Setzen der seriellen Schnittstelle per stty (1):\n";
print_r($output);
} // function initSerial
function checkLine($line, $sn) {
global $channels;
global $urlBase;
global $argv;
echo "Line: '$line'\n";
$line=trim($line);
if ($line=='!') return("\n bin durchgelaufen\n");
foreach(array_keys($channels) as $orbis) {
if(substr($line,0,strlen($orbis))==$orbis && (count($argv) > 1 || $orbis=="16.7(") ) {
echo "match für $orbis\n";
$part=(float)substr($line,6);
// 2.8.0(885.259*kWh)
$part=strstr(substr($line,6),'*',true);
if (('1.7.0(' == $orbis) or ('2.7.0(' == $orbis)) $part=$part*1000;
echo "ermittelter Wert: $part\n";
// mode
echo "rufe $urlBase auf.\n";
$socket = fsockopen($urlBase);
$value = "item|" . $channels[$orbis] . "|" . (float)$part;
print "$value\n";
fputs($socket, $value);
//$url=$urlBase.$channels[$orbis].'.json?operation=add&value='.$part;
// save value
$h = fopen("." . $sn . "." . $orbis, 'w');
fwrite($h, serialize($part));
fclose($h);
// $values[$orbis] = $part;
//$dummy=curl_file_get_contents($url);
} // if
} // foreach
} // function checkLine
function curl_file_get_contents($URL)
{
$c = @curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);
if ($contents) return $contents;
else return FALSE;
} // function curl_get_file_contents
function getTimestamp() {
$seconds = microtime(true); // false = int, true = float
return round( ($seconds * 1000) );
}
/**
* Starte Script
* Iterate through all usb devices and lost information
*/
foreach ($devices as $device => $channels)
{
print "$device\n";
print_r ($channels);
setSerialInitial($device,300);
$fp=fopen($device,'c+');
if (!$fp) {
echo "Konnte Port nicht öffnen (1)\n";
die;
} else {
echo "Port öffnen OK\n";
} // if
echo "Request senden ...";
$out = "/?!\r\n";
fwrite($fp, $out);
echo "Request OK.\n";
echo "Lese eine Zeile\n";
echo $sn = fgets($fp);
$sn = substr($sn, 0, 17);
echo "gelesen\n";
/*
echo "Lese eine Zeile\n";
echo fgets($fp);
echo "gelesen\n";
*/
echo "sicherheitshalber etwas warten\n";
usleep(500 * 1000);
echo "bps-Rate-Request senden ...";
//$out = "\x06\x30\x35\x31\x0D\x0A"; alt
//$out = "\x06\x30\x30\x30\x0D\x0A"; //063030300d0a
//$out = "\063030300d0a\r\n"; // 063030300d0a
$out = "\x06040\r\n"; // 063030300d0a
//$out = "\x06040\r\n";
// fuer 19200:
// $out = "\x06060\r\n";
fwrite($fp, $out);
echo "BPS Request OK.\n";
echo "warte bis Zeichen ausgegeben wurden...\n";
usleep(500 * 1000);
//setSerial($device,9600);
echo "schließe Port\n";
fclose($fp);
setSerial($device,4800);
// für 19200
// setSerial($device,19200);
echo "öffne Port\n";
$fp=fopen($device,'c+');
if (!$fp) {
echo "Konnte Port nicht öffnen (2)\n";
die;
} else {
echo "Port 4800 OK\n";
} // if
echo "lese Rest ein\n";
while (!feof($fp)) {
echo $line=fgets($fp, 256);
checkLine($line, $sn);
} // while
fclose($fp);
}
?>
[[[[aktuell]]]] type = num cache = on eval = sh.ehz.haus() - sh.ehz.haus.db('max', '1d', sh.minute.since.midnight.dbstr()) eval_trigger = ehz.haus
[[[[aktuell]]]] type = num cache = on eval = sh.ehz.haus() - sh.ehz.haus.db('min', sh.minute.since.midnight.dbstr(), '1d') eval_trigger = ehz.haus
root@fhem:/usr/local/smarthome/plugins/sqlite# chown smarthome:smarthome __init__.py root@fhem:/usr/local/smarthome/plugins/sqlite# cd .. root@fhem:/usr/local/smarthome/plugins# cd .. Init SmartHome.py 1.0-35-gf62db45+ 2015-02-27 17:08:06 INFO Main Start SmartHome.py 1.0-35-gf62db45+ 2015-02-27 17:08:06 INFO Main Init Scheduler 2015-02-27 17:08:06 INFO Main Init Plugins 2015-02-27 17:08:06 ERROR Main Plugin sql exception: inconsistent use of tabs and spaces in indentation (__init__.py, line 80) Traceback (most recent call last): File "/usr/local/smarthome_develop_version_23_02_2015/lib/plugin.py", line 53, in __init__ plugin_thread = Plugin(smarthome, plugin, classname, classpath, args) File "/usr/local/smarthome_develop_version_23_02_2015/lib/plugin.py", line 79, in __init__ exec("import {0}".format(classpath)) File "<string>", line 1, in <module> File "/usr/local/smarthome_develop_version_23_02_2015/plugins/sqlite/__init__.py", line 80 logger.info("SQLite: upgrading database. Please wait!") ^ TabError: inconsistent use of tabs and spaces in indentation
TabError: inconsistent use of tabs and spaces in indentation
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar