Hallo,
seit langem habe ich wieder einmal ein neues Projekt und wuerde mich um Unterstüzung freuen.
Habe seit kurzem eine Solaranlage und bekomme meine Daten mit Solaranzeige (Grafana) angezeigt,
Der Wechselrichter und der Hauszaehler wird jeweils mit einem Shelly 3EM ausgelesen.
Ich moechte gerne mit einer RGB Wifi LED Lampe folgendes anzeigen:
Einspeisung < 0 , Lampe ist rot
Einspeisung > 500 , Lampe ist gelb
Einspeisung > 1000 , Lampe ist gruen.
Die Daten sollen von der Solaranzeige kommen und mit einem Python script ausgewertet werden,
Ich habe da schon ein Python script das eine weisse Wifi Lampe kontrollieren kann (Ein /Aus,Full Brightness)
Hier das funktionierende Script: (/home/pi/th/PVLight.py)
#!/usr/bin/env python3
from socket import socket, AF_INET, SOCK_DGRAM
import time
from time import sleep
def send_command(cmd, ip, port):
with socket(AF_INET, SOCK_DGRAM) as sock:
addr = (ip, port)
sock.sendto(cmd, addr)
ZONE1_ON = b"\x38\x00\x55"
ZONE1_FULL = b"\xB8\x00\x55"
ZONE1_OFF = b"\x3B\x00\x55"
IP = "192.168.0.20"
PORT = 8899
send_command(ZONE1_ON, IP, PORT)
send_command(ZONE1_FULL, IP, PORT)
sleep(1)
send_command(ZONE1_OFF, IP, PORT)
sleep(5)
send_command(ZONE1_OFF, IP, PORT)
sleep (1)
Display More
Wie wird jetzt zum anfangen, damit ich verstehe wie es geht, z.B. diese Script so erweitert , damit wenn Einspeisung > 1000 ist, das Kommando send_command(ZONE1_ON, IP, PORT) ausgefuehrt wird.?? Was muss in Solranzeige /var/www/html/shelly.php eingetragen werden, damit die Daten vom Python script gelesen werden koennen?
so ?????
if ($i == 1) {
$funktionen->log_schreiben(var_export($aktuelleDaten,1)," ",8);
$funktionen->log_schreiben(print_r($Daten,1)," ",9);
// Eingefuegt fuer PVLicht.py
$params = "{$aktuelleDaten["AC Verbrauch"]} {$aktuelleDaten["AC Leistung"]}";
exec("/usr/bin/python3 /home/pi/th/PVLicht.py $params > /dev/null &");
Wie sieht das neue Python script aus? mit $params kenne ich mich ueberhaut nicht aus.
Zusammen kopiert:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('verbrauch')
parser.add_argument('leistung')
args = parser.parse_args()
einspeisung = int(args.leistung) - int(args.verbrauch)
# Test
if einspeisung > 1000:
send_command(ZONE1_ON, IP,PORT)
Display More
Fehler=
pi@solaranzeige:~/th $ /home/pi/th/PVLicht.py
usage: PVLicht.py [-h] verbrauch leistung
PVLicht.py: error: the following arguments are required: verbrauch, leistung
Wenn ich das verstehe, kann ich hoffentlich auch spaeter das mit den 3 Farben umsetzen.
Fuer jede Unterstuetzung bin ich sehr dankbar, da Anfaenger in Sachen php, Daten auslesen und uebertrage, etc.
Vielen Dank und Gruss
gwaag