Ik heb de uitlezing nu ook werkend met een Sagemcom XS210 door middel van een Raspberry 3 model B.
Die versie van de Raspberry heeft wat voeten in de aarde om device ttyAMA0 (de GPIO UART pinnen) weer beschikbaar te maken!
Eerst met een FTDI USB-serial converter (op 5v) gecheckt door deze softwarematig te inverteren (FT_Prog tool is daarvoor te downloaden). Daarmee rechtstreeks aangesloten (P1 GND->FTDI GND, P1 TX->FTDI RX). Daarmee kreeg ik (geinverteerd en niet geinverteerd) alleen niet-leesbare tekens, maar wel consequent qua ritme/patroon.
Toen een weerstand (ik koos 1kOhm) tussen VCC en RX geplaatst, n.a.v. de tip hierboven (daar zegt hij deze tussen de P1 TX en de VCC te plaatsen, maar in mijn eerste test zonder transistorcircuit is dat tussen P1 TX en VCC). Dat werkte perfect: weerstand erop = goede uitlezing, weerstand weg = chinees.
Daarna het transistor-circuit gebouwd voor hardware-matige invertering, en daarbij de extra 1k (!) weerstand geplaatst volgens tip hierboven (tussen P1 TX en VCC). Opnieuw met de FTDI USB-serial converter getest, maar nu op 3.3v en software-invertering uitgeschakeld. Opnieuw werkende communicatie!
Toen was ik aan de laatste stap toe: de GPIO UART pins van de Raspberry Pi 3 model B gebruiken voor hetzelfde (dus zonder losse FTDI USB-serial converter). Maar wat ik ook probeerde, de seriele poort ttyAMA0 wilde niet meewerken; net alsof hij niet beschikbaar was, ondanks dat het device bestond.
Ik had al de basic settings via raspi-config gedaan, maar dat bleek niet genoeg.
Bij de Raspberry 3 model B is device ttyAMA0 namelijk gemapped aan de bluetooth adapter!
Dit in tegenstelling tot Raspberry 2's. Om dat te veranderen moet je een aantal dingen doen.
To disable onboard Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15 modify:
sudo nano /boot/config.txt
Add to the end of the file:
dtoverlay=pi3-disable-bt
We also need to run to stop BT modem trying to use UART:
sudo systemctl disable hciuart
(daarvoor deed ik nog het volgende, maar dat is waarschijnlijk niet eens relevant):
The steps I took:
I added the user pi to the groups dialout and tty with
sudo usermod -a -G dialout pi
sudo usermod -a -G tty pi
Then I stopped the service getty. It's used as a terminal port to log into the raspi and to do console logging.
To provide this service the raspberry uses the serial port and blocks it for other use (at least if you're not root). To stop the service use:
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
(en dus daarvoor al de basis settings in raspi-config gedaan om serial-console te disablen en serial-interface te enablen)
zie ook m'n plaatje hieronder:
Volgende stap is in Python het
actuele terugleververmogen uit te lezen en naar een analoge uitgang te sturen; daarmee wil ik
proportioneel via een power converter een boiler aansturen zodra ik aan het terugleveren ben, met niet meer vermogen dan dat ik over heb.
Ik zag de vraag voor het analoog uitsturen van het vermogen ook al staan bij de P1Monitor request list, maar voordat die genoeg stemmen heeft ben ik al oud. Bovendien is zelf maken veel leuker.
[
Voor 7% gewijzigd door
Magnus O. op 17-11-2023 23:38
]