Elster A1500 Seriell auslesen

Hallo
Der Weg

Das Script 1440.c ist ein C-Programm, das zuerst kompiliert werden muss.
Am Raspi einloggen und „gcc“ eingeben.
Wenn folgendes kommt ist das schonmal gut:
gcc: fatal error: no input files
compilation terminated.

Bei folgendem sieht es dann eher schlecht aus:
-bash: gcc: command not found

Ich gehe mal davon aus, das das erstere kam, dann das 1440.c kompilieren.
Dies habe ich direkt ins /var/lib/symcon Verzeichniss gelegt, damit es auch mit gesichert wird.

Das geht mit
gcc as1440.c -o as1440
Danach sollte nach Aufruf von as1440 im selben Verzeichnis mit
./as1440
folgendes rauspurzeln:
usage: ./as1440 -F device -O obisval1[:obisval2…] [-p password ]
[-v]
[-n] [-e]
-v verbose
-t left trim zeros
-n don’t add units
-e endless loop (end with ctrl-c)

Wenn einn Lesekopf am Raspi ist, folgendes probieren:
./as1440 -F /dev/ttyUSB0 -O 1.7.0:1.8.0 -v

In IPS als Script einbauen


<?php

$data = shell_exec('/var/lib/symcon/as1440 -F /dev/ttyUSB0 -O 2.8.0:1.8.0:2.7.0:1.7.0 -v -n -t'); 
//echo $data;

//print_r ($data);
$werte = preg_split("/[\s,]+/", $data);
//print_r($werte);
$temp = ($werte[1]);
$Out180 = trim ($temp, 'notfound');
        SetValue (57421 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Bezug Zählerstand 1.8.0]*/, $Out180); 
$temp = ($werte[3]);
$In280 = trim ($temp, 'notfound');
        SetValue (25607 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Einspeisung Zählerstand 2.8.0]*/, $In280); 
$temp = ($werte[5]);
$Out170 = trim ($temp, 'notfound');
        SetValue (14160 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Wirkleistung (Out) 1.7.0]*/, $Out170); 
$temp = ($werte[7]);
$In270 = trim ($temp, 'notfound');
        SetValue (18970 /*[Energie\Hausanschluß Haus 16\Strom\As1440\Wirkleistung (In) 2.7.0]*/, $In270); 
?>

Nicht schön, aber läuft.
Bernd