hab mit der Beschreibung angefangen: https://forum.drbacke.de/viewtopic.php?t=5409
Habe nochmal ein wenig umgebaut. Zum einen ist alles in den Keller gewandert und die Kommunikation geht jetzt über einen PLC Adapter. Zum anderen habe ich das gute Labornetzteil durch ein Flatpack Netzteil ersetzt, das ohnehin schon länger hier rumlag.
Nochmal ein Zwischenstand, April bis Oktober
- 275 kWh durch den Speicher gezogen
- 183 kWh verschenkt (Großteil während Urlauben)
- 820 kWh ins E-Auto geladen
- 851 kWh aus dem Netz bezogen
Es sieht also so aus, dass die PV bilanziell unseren Haushaltsstrom abdeckt und der Strom fürs Auto aus dem Netz kommt. Achso 820 kWh stimmen nicht ganz, eine Herdplatte ist da noch dabei (Phase 3). Also sinds in Wirklichkeit vielleicht 5% weniger.
zum Vergleich die Bilanz von Juli:
- 124 kWh sind durch den Speicher geflossen
- 116 kWh wurden verschenkt
- 387 kWh wurden ins E-Auto geladen
- 392 kWh wurden aus dem Netz bezogen
Moin,
ich versuche mich gerade daran, einem Soyosource 500W was aus seiner Schnittstelle zu locken.
Wie ich schon in einem anderen Fred schrieb, gibt es auf dessen Board offenbar eine nicht genutzte Schnittstelle:
Hier habe ich von RX und TX Kabel an folgendes Modul geknotet.
Die Schnittstelle wird auf meinem Raspi auch erkannt und als ttyUSB0 ausgwiesen. Mit Python habe ich versucht, dort was zu lesen / schreiben - es passiert allerdings rein gar nichts. Weil ich auch nicht weiß, ob A und B an RX oder TX soll habe ich das auch mal getauscht - Resultat: nichts.
Mein Script:#!/usr/bin/python
import os, sys
import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 4800, timeout = 5)
while True:
#bytes = [ 24, 56, 00, 21, 00, 00, 80, 8 ]
bytes = [ 0x24, 0, 0, 0, 0, 0, 0, 0 ]
ser.write(bytes)
print (ser.read(8))
time.sleep(1)
while True:
line = ser.readline()
if len(line) == 0:
print("Time out! Exit.n")
sys.exit()
print(line)
Hat jemand einen Tipp?
Ok, ich glaube die config wäre geschafft. In der App mein WLAN eingetragen und dann gehts mit dem web Frontend weiter. Konstante Leistung hat schonmal funktioniert. Nur kommt immer noch nichts aus dem RS485 raus...
Hat jemand einen Tipp?
Nur einen sehr schwachen: verfolge mal die Leiterbahnen auf der soyo-Platine,
wohin gehen die?
welche Chips sind das?
Auf der Oberseite scheint da jedenfalls schon mal kein Anschluss zu sein.
Mir ist gar nichts zur Regelbarkeit dieser kleinen (500er) Soyo über RS485 bekannt.
Hat jemand einen Tipp?
Nur einen sehr schwachen: verfolge mal die Leiterbahnen auf der soyo-Platine,
wohin gehen die?
welche Chips sind das?Auf der Oberseite scheint da jedenfalls schon mal kein Anschluss zu sein.
Mir ist gar nichts zur Regelbarkeit dieser kleinen (500er) Soyo über RS485 bekannt.
Ich schau mal bei Gelegenheit nach. Der Soyo 500 hat ja einen Poti, mit dem man die Einspeisung (und ob PV oder BAT) einstellen kann. Den habe ich (siehe anderen Fred) mit einem digitalen Poti ersetzt. Insofern funktioniert es schon ganz gut - direkt über den RS485 wäre es aber geiler.
Und was ich gemerkt habe: schließe ich RX/TX über den abgebildeten Bluetooth-Stick an den Raspi, ändert sich das Verhalten des Poti ... "irgendwas" passiert da also ...
Ein kleines Detail bevor du das Mainboard des Soyos verheizt: Auf deinem Foto, welches den Mikrocontroller zeigt sieht man keinen Chip, welcher als RS485-Converter zum Einsatz kommen könnte. Du darfst deshalb nicht mit einem USB-zu-RS485-Wandler auf den Pin-Header gehen. Das Signal, welches aus dem USB-zu-RS485-Wandler kommt ist -12/+12V (differenziell), wenn man nach den RS485-Spezifikationen geht. Der Pin-Header erwartet aber voraussichtlich ein UART-TTL-Signal (0V/+5V oder 0V/+3.3V), weil er mit RX/TX beschriftet ist und nicht mit A/B. Such dir deshalb einen FTDI / USB-to-Serial-Wandler und beginn dein Experiment von vorn! 🙂
Ein kleines Detail bevor du das Mainboard des Soyos verheizt: Auf deinem Foto, welches den Mikrocontroller zeigt sieht man keinen Chip, welcher als RS485-Converter zum Einsatz kommen könnte. Du darfst deshalb nicht mit einem USB-zu-RS485-Wandler auf den Pin-Header gehen. Das Signal, welches aus dem USB-zu-RS485-Wandler kommt ist -12/+12V (differenziell), wenn man nach den RS485-Spezifikationen geht. Der Pin-Header erwartet aber voraussichtlich ein UART-TTL-Signal (0V/+5V oder 0V/+3.3V), weil er mit RX/TX beschriftet ist und nicht mit A/B. Such dir deshalb einen FTDI / USB-to-Serial-Wandler und beginn dein Experiment von vorn!
Oh, danke für den Hinweis. Die Begriffe sagen mir alle nichts ... der Stick ist aber bezeichnet als "RS485 -> USB" ... anyway ... vielleicht eher das hier, scheint ein Multi-Funktions-Teil zu sein ... RX/TX, A/B ...
Genau! Mit diesem Stick machst du nichts falsch.
Schon bestellt! 😀
Vorerst letzte Frage: muss dann RX an RX und TX an TX oder gekreuzt?
Du könntest diese Diskussion einmal quer lesen: https://electronics.stackexchange.com/questions/382773/what-are-tx-and-rx-relative-to
Die Erfahrung zeigt leider, dass wenn man zwei Geräte miteinander verbindet, gerne eines der beiden Gerät falsch beschriftet ist. Ich würde deshalb immer beides ausprobieren. Deine Idee ist aber grundsätzlich richtig, der "Mund (TX) des einen Gerätes, sollte in das (RX) Ohr des anderen Gerätes sprechen". Bleibt also die Frage, ob der USB-Wandler aus der perspektive des Partners oder aus seiner eigenen Perspektive beschriftet wurde.
So, habe den USB-Adapter dran, kaum sind RX/TX (offenbar) richtig verbunden, kommt auch was rein ... praktisch pausenlos ...
Sind oft die gleichen 3 Bytes, ab & zu auch mal andere (habe das mal optisch ein wenig aufbereitet):
x08x1exfcx08x1exfcx08x1exfcx08x1exfc
x00x1exfcx08x0ex08x1exfcx08x1exfcx08x1exfcx08x0exfcx08x1exfcx08x1exfcx00x1exfcx08x1exfc
x08x0ex08x1exfcx08x1exfcx08x0exfcx08x1exfc
x08x1exf8x00x1exfcx08x0ex08x1exfcx00xf8x08x86xfc
x08x1exf8x08x0exffx08x1exfcx08x1exfcx08x1exfcx08x1exfcx08x1exfc
...
Habe auch versucht, ein Paket zu senden (ist von Github), um die Leistung einzustellen ... ändert nichts, weder am Output noch der Einspeisung:
demand = 100
byte4 = int(demand/256) ## (2 byte watts as short integer xaxb)
if byte4 < 0 or byte4 > 256:
byte4 = 0
byte5 = int(demand)-(byte4 * 256) ## (2 byte watts as short integer xaxb)
if byte5 < 0 or byte5 > 256:
byte5 = 0
byte7 = (264 - byte4 - byte5) ## checksum calculation
if byte7 > 256:
byte7 = 8
bytes = [ 0x24, 0x56, 00, 0x21, byte4, byte5, 0x80, byte7 ]
ser.write(bytes)
print(ser.read(16))
Hmm. Jemand eine Idee?
😐
Welche Baudrate benutzt du und hast du unterschiedliche ausprobiert?
Baudrate 4800, habe auch mal 9600 probiert ... da sehen die Bytes anders aus ... in meinen Augen nicht gut:
x00x00xd0x01x01x00x00xd0x01x01x00x00xd0x01x01
x00x00xd0x01x01x00x00xd0x01x01x00x00xd0x01x01
x00x00xd0x01x01x00x00xd0x01x01x00x00xd0x00xff
x00x00xd0x01x01x00x00xd0x01x01x00x00xd0x01x01
x00x00xd0x01x01x00x00xd0x01x01x00x00xd0x01x01
Definitiv steht fest: der Anschluss über RS485 ändert die Verstellmöglichkeiten des Poti - die Schnittstelle ist also offenbar aktiv.
Mir ist noch etwas unklar, wie das Zusammenspiel von Poti und RS485 funktionieren soll. Und werde da heute Abend nochmal experimentieren (Originalpoti ran, ab, auf Null stellen, auf 100% stellen).
Mich irritiert die Kürze der Frames. Auf 3 Bytes ist kein/kaum Platz (1 Byte Preambel, 1 Byte Payload, 1 Byte Checksumme). Deshalb war ich auf der Suche nach laengeren Frames in der Hoffnung, dass eine hoehere Baudrate mehr Bytes zu Tage foerdert.