PIP812 Daten in eine Influxdb schreiben Version 2

In meinem letzten Post habe ich beschrieben wie ich den PIP812 mit SolPipLog auslese. Leider ist das sehr umständlich. Von daher habe ich weitergesucht und bin jetzt auf folgendes Projekt gestoßen.

Solar-SIS

Das Projekt läuft auf Basis von nodejs und liest die Daten aus und schickt sie direkt in die Influxdb. Es hat immer noch zu viele Abhängigkeiten aber definitiv besser als Variante 1. Hier jetzt die Schritte wie ich die Lösung auf meinem RPi2 installiert habe.

Installation von NodeJS

Am einfachsten fügt man die folgende APT Ressource zum Raspi OS hinzu und installiert NodeJS mit APT.

curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
apt install -y nodejs

Installation solar-sis

cd /opt/
npm install solar-sis --unsafe-perm

Test:

root@silber:/opt/solar-sis/example/PIP4084 # node project.js
[2018-05-01 21:10:16] http localhost Listening on port: 3001
[2018-05-01 21:10:16] info serial:/dev/hidraw0 Open serial port
[2018-05-01 21:10:16] info queue:ADD_INTERVAL query/general_status:QPIGS·©
[2018-05-01 21:10:16] info queue:ADD_INTERVAL query/device_rated_information:QPIRIøT
[2018-05-01 21:10:19] info serial:/dev/hidraw0:SEND query/general_status
[2018-05-01 21:10:19] info serial:/dev/hidraw0:SEND_RAW [{"type":"Buffer","data":[81,80,73,71,83,183,169,13]}]
[2018-05-01 21:10:20] info serial:/dev/hidraw0:RECIVED_RAW Data: (230.0 50.0 230.0 50.0 0000 0000 000 422 13.78 000 095 0234 0000 000.0 12.34 00000 10010101 27 05 00000 000�V Length: 109
[2018-05-01 21:10:20] info serial:/dev/hidraw0:RECIVED query/general_status
[2018-05-01 21:10:20] info influx:SEND pip_query_general_status grid_voltage=230,grid_frecuency=50,ac_output_voltage=230,ac_output_frecuency=50,ac_output_power_va=0,ac_output_active_power=0,output_load_percent=0,bus_voltage=422,battery_voltage=13.78,battery_charging_current=0,battery_capacity=95,inverter_heat_sink_temperature=234,pv_input_current_for_battery=0,pv_input_voltage_1=0,battery_voltage_from_scc=12.34,battery_discharge_current=0,device_status=10010101,charging_scc=1,charging_ac=0,charging_scc_acc=1
[2018-05-01 21:10:20] info serial:/dev/hidraw0:SEND query/device_rated_information
[2018-05-01 21:10:20] info serial:/dev/hidraw0:SEND_RAW [{"type":"Buffer","data":[81,80,73,82,73,248,84,13]}]
[2018-05-01 21:10:20] info serial:/dev/hidraw0:RECIVED_RAW Data: (230.0 04.3 230.0 50.0 04.3 1000 0800 12.0 11.5 11.0 14.4 13.5 2 20 40 0 1 1 - 01 1 0 13.8 0 0f� Length: 98
[2018-05-01 21:10:20] info serial:/dev/hidraw0:RECIVED query/device_rated_information
[2018-05-01 21:10:20] info influx:SEND pip_query_device_rated_information grid_rating_voltage=230,grid_rating_current=4.3,ac_output_rating_voltage=230,ac_output_rating_frecuency=50,ac_output_rating_current=4.3,ac_output_rating_apparent_power=1000,ac_output_rating_active_power=800,battery_rating_voltage=12,battery_recharge_voltage=11.5,battery_under_voltage=11,battery_bulk_voltage=14.4,battery_float_voltage=13.5,battery_type=2,current_max_ac_charging=20,current_max_charging_current=40,input_voltage_range=0,output_source_priority=1,charger_source_priority=1,parallel_max_num=NaN,machine_type=1,topology=1,output_mode=0,battery_re_discharge_voltage=13.8,pv_condition=0,pv_power_balance=0

Start script

vi /etc/systemd/system/solar-sis.service
[Unit]
Description=Node.js Example Server
#Requires=After=mysql.service       # Requires the mysql service to run first

[Service]
ExecStart=/usr/bin/node /opt/solar-sis/example/PIP4084/project.js
# Required on some systems
WorkingDirectory=/opt/solar-sis/example/PIP4084/
Restart=always
 # Restart service after 10 seconds if node service crashes
 RestartSec=10
 # Output to syslog
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=solar-sis
#User=<alternate user>
#Group=<alternate group>
Environment=NODE_ENV=production PORT=1337

[Install]
WantedBy=multi-user.target
systemctl enable solar-sis.service
systemctl start solar-sis.service

Wenn Ihr wie ich bereits eine InfluxDB habt könnt Ihr in der session.json Datei die URL zu eurer InfluxDB anpassen.

"influxUrl": "http://[INFLUXDB-IP]:8086/write?db=[PIP-DATENBANK]&precision=s",

Auszug aus der Datei:

root@silber:/opt/solar-sis/example/PIP4084 # cat session.json
{
  "serial_port": "/dev/hidraw0",
  "serial_baudrate": 2400,
  "serial_queue_delay": 200,
  "serial_parsers_readline": "\r",
  "serial_restart_threshold": 10000,
  "serial_clear_command_queue_on_restart": true,
  "http_port": 3001,
  "influx_pre_header": "pip_",
  "influxUrl": "http://[INFLUXDB-IP]:8086/write?db=[PIP-DATENBANK]&precision=s",
  "IntervalCommands": [

Ergebnis: