USB Serial op Synology DS212j
Met mijn vorige projectje om de P1 poort van de energie meter uit te lezen had ik een goedkope Chinese USB serial dongle gebruikt. (3EUR) Die kom ik met de juiste driver snel gebruiken op mijn PC.
In mijn geval had de dongle een VID 0x1a86 & PID 0x7523 (1a86:7523) wat neerkomt op een ch341 chipset van winchiphead. De windows driver is te vinden op hun (Chinese) site http://www.winchiphead.com/download/CH341/CH341SER.ZIP
Echter voor het meten van mijn stroomverbruik wil ik niet de hele tijd een PC hebben draaien. Nou heb ik wel een NAS van Synology DS-212j thuis aanstaan. Hierop draait een Linux kernel.
Normaal gespoken ondersteund de NAS geen USB serial devices maar met de juiste drivers lukt dat wel.
Met behulp van verschillende posts was het duidelijk dat ik de z.g. kernel modules moest maken
uitpakken van de sources
# tar -xvjf synogpl-1337b-6281.tbz
Uitpakken van de toolchain naar /usr/local
# tar -zxvf gcc421_glibc25_88f628x.tgz -C /usr/local
Edit Makefile verander de CROSS_COMPILE variable en evt de ARCH
# vi /home/<userdir>/source/linux-2.6.32/Makefile
CROSS_COMPILE = /usr/local/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
ARCH=arm
Dan de kernel config aanpassen
# cd /home/<userdir>/source/linux-2.6.32/synoconfigs
# cp 88f6281 ../.config
# make ARCH=arm menuconfig
ga naar
Device Drivers ---> USB support ---> USB Serial Converter support ---> USB Winchiphead ch341..
(klik M)
en make om de modules te maken
# make ARCH=arm modules
het resultaat is dan in
/home/<userdir>/source/linux-2.6.32/drivers/usb/serial/
kopieer usbserial.ko en ch341.ko naar de Synology
Dan de modules laden
# insmod usbserial.ko
# insmod ch341.ko
Je kan controleren of het succesvol was
# dmesg
[379727.610000] usbcore: registered new interface driver usbserial
[379727.620000] USB Serial support registered for generic
[379727.630000] usbcore: registered new interface driver usbserial_generic
[379727.640000] usbserial: USB Serial Driver core
[379744.940000] USB Serial support registered for ch341-uart
[379744.940000] ch341 1-1.1:1.0: ch341-uart converter detected
[379744.960000] usb 1-1.1: ch341-uart converter now attached to ttyUSB0
[379745.000000] usbcore: registered new interface driver ch341
DiskStation>
In mijn geval had de dongle een VID 0x1a86 & PID 0x7523 (1a86:7523) wat neerkomt op een ch341 chipset van winchiphead. De windows driver is te vinden op hun (Chinese) site http://www.winchiphead.com/download/CH341/CH341SER.ZIP
Echter voor het meten van mijn stroomverbruik wil ik niet de hele tijd een PC hebben draaien. Nou heb ik wel een NAS van Synology DS-212j thuis aanstaan. Hierop draait een Linux kernel.
Normaal gespoken ondersteund de NAS geen USB serial devices maar met de juiste drivers lukt dat wel.
Met behulp van verschillende posts was het duidelijk dat ik de z.g. kernel modules moest maken
- http://hallard.wikidot.com/synomodules
- http://www.ruinelli.ch/add-usb-serial-support-to-your-synology-diskstation
- Kijken welke processor de synology heeft http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have
- Download DSM 4.0 Tool Chains for the Marvell 88F628x Linux 2.6.32 (afhankelijk van welke versie je hebt draaien op de Synology (test met uname -a op de command prompt) https://sourceforge.net/projects/dsgpl/files/DSM%204.0%20Tool%20Chains/
- Download de Synology NAS GPL Source voor mij was het synogpl-2198-6281 https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/2198branch/
- Maken van de modules (linux PC of live CD nodig)
- Laden van de modules
uitpakken van de sources
# tar -xvjf synogpl-1337b-6281.tbz
Uitpakken van de toolchain naar /usr/local
# tar -zxvf gcc421_glibc25_88f628x.tgz -C /usr/local
Edit Makefile verander de CROSS_COMPILE variable en evt de ARCH
# vi /home/<userdir>/source/linux-2.6.32/Makefile
CROSS_COMPILE = /usr/local/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
ARCH=arm
Dan de kernel config aanpassen
# cd /home/<userdir>/source/linux-2.6.32/synoconfigs
# cp 88f6281 ../.config
# make ARCH=arm menuconfig
ga naar
Device Drivers ---> USB support ---> USB Serial Converter support ---> USB Winchiphead ch341..
(klik M)
en make om de modules te maken
# make ARCH=arm modules
het resultaat is dan in
/home/<userdir>/source/linux-2.6.32/drivers/usb/serial/
kopieer usbserial.ko en ch341.ko naar de Synology
Dan de modules laden
# insmod usbserial.ko
# insmod ch341.ko
Je kan controleren of het succesvol was
# dmesg
[379727.610000] usbcore: registered new interface driver usbserial
[379727.620000] USB Serial support registered for generic
[379727.630000] usbcore: registered new interface driver usbserial_generic
[379727.640000] usbserial: USB Serial Driver core
[379744.940000] USB Serial support registered for ch341-uart
[379744.940000] ch341 1-1.1:1.0: ch341-uart converter detected
[379744.960000] usb 1-1.1: ch341-uart converter now attached to ttyUSB0
[379745.000000] usbcore: registered new interface driver ch341
DiskStation>
Hoi Marcel,
BeantwoordenVerwijderenIk heb sinds een week 8 zonnepanelen op mijn dak staan met een Mastervolt SX2000, en ben erg benieuwd wat de status is van het systeem, en loop elke keer naar de display om te kijken.
Ik monitor al enige tijd de kWh meter niet een slimme, en dat doe ik met de Youless en kan dit leuk uitlezen, en gekoppeld aan Bidgely. Nu met de zonnepanelen merk ik dat de Youless geen onderscheid kan maken van terug leveren of niet.
Nu heb ik een Synology DS1511+ en las ik dat jij al een systeem hebt dat met de synology wordt uitgelezen. Ik zou dit heel graag willen maar ben zelf iemand van de plug en play met een heel klein beetje meer. Zou jij mij kunnen helpen wat ik er voor moet doen om de gegevens uit de Mastervolt SX2000 te halen en vervolgens te zien op de Synology. Ik wil jou daar best een donatie voor geven. Mijn mail adres willem@whvl.nl
Gr. Willem.
Voor de Mastervolt SX2000 heb je vlg mij een iets andere interface nodig dan voor die mastervolt Soladin 600 die ik heb.
VerwijderenIk gebruik 'solget' om de data in te lezen, zover ik begrepen heb zou het ook min of meer voor de Mastervolt SX2000 moeten werken.
De stappen hierboven moeten ook op de DS1511+ werken
Erg interessant, denk dat ik ook maar zo iets ga proberen. Maar ik heb wel een vraag, hoe lees je de gegevens vervolgens in op je Synology? Of worden die automatisch weggeschreven. Dat stuk is me nog onduidelijk hoe nu verder als je de verbinding met de synology eenmaal gelegd hebt.
BeantwoordenVerwijderenMarcel,
BeantwoordenVerwijderenOp dit moment heb ik de drivers etc op Synology klaar.
Ik krijg ook data, maar net als de eerste keer op windows (zonder aanpassingen PuTTY, parity even, en bits 7) is het onleesbaar.
Ik ben op zoek hoe ik dit op mijn syno doosje aangepast kan krijgen. Hopelijk heb jij een idee.
Hoi Patrick,
VerwijderenIs het helemaal onleesbaar? In windows zou het goed leesbaar moeten zijn als plain tekst. In Linux zou het minder leesbaar kunnen zijn, ik ben erachter gekomen dat de driver voor deze dongle de 7bit niet helemaal goed werkt. (blijft op 8 bit staan). Ik denk inmiddels te weten wat er aangepast moet worden in de driver, maar ben er nog niet toe gekomen om dit te doen en te testen.
Het alternatief is om bij het uitlezen dit te corrigeren (inlezen als 8 bit en dan de 'hoogste bit' eraf te halen, dan hou je 7 bit ascii over)
copy-paste anders eens de output die je krijgt misschien 'herken' ik het.
Wat ik heb gedaan is het volgende:
BeantwoordenVerwijderenstty -F /dev/ttyUSB0 evenp
Nu komt de juiste data er wel uit. Vreemd blijf ik het wel vinden, omdat ik op Windows 7 bits moest doen en op Linux dus niet....
Beste Marcel,
BeantwoordenVerwijderenOok ik heb een DS212j. Zou de modules die je gemaakt hebt kunnen delen?
Zijn er ondertussen nog zaken gewijzigd in DSM 4.3? Is het nog steeds benodigd de modules zelf te maken?
Heb je nog wat instructies hoe ik de meterstanden kan uitlezen?
Ik heb het reeds werkend met een raspberry, i.c.m. de software minicom en cu.
Ik zou het nu graag via de NAS laten verwerken.
Voor degene die dit ook willen doen, hier de easyway.
BeantwoordenVerwijderenInstalleer deze package via de package manager van de DSM. (ds212j, ARM processor).
http://www.fischer-net.de/hausautomation/downloads/file/21-usb-driver-kernel-2-6-32-mfr-1-0-syno-88f628x-spk.html
Fischer mist helaas de ch341.ko module.
BeantwoordenVerwijderenKun je deze beschikbaar stellen ?
Ik heb een Synology @214, een serial to usb kabel.
BeantwoordenVerwijderenKan iemand me helpen om op deze manier de P! poort van mijn slimme meter uit te lezen?
Daar ben ik ook nieuwsgierig naar!
BeantwoordenVerwijderenBen zelf ook niet zo technisch en lees veel verhalen over arduine, rasp enz maar dit gaat al heel snel heel technisch..
BeantwoordenVerwijderenHeb zelf een ds214Play en zou graag ook de P1 uit willen lezen. Maar kan nergens een stap voor stap handleiding vinden die ik kan gebruiken. Iemand?
Sorry voor de rare inbreuk, maar ik kan bij het soladin verhaal geen vragen stellen (afgesloten?) Heb je misschien nog een aansluitschema en prog beschikbaar voor het uitlezen van 1 soladin systeem? Duizend maal dank.
BeantwoordenVerwijderenHi Rob,
Verwijderenhet basis schema is hier. https://github.com/teding/SolaDin
Ik heb mijn soladins verkocht. Heb evt nog wel mijn uitlees kastje liggen (mag je tegen kostprijs hebben als dat je helpt)
Hi Marcel,
VerwijderenHet is natuurlijk leuker om het eerst zelf te proberen. Ik heb een nano en een uno + LCD shield liggen maar ben niet zo bedreven in programmeren. Ik begrijp dat aan het soladin program het stukje ontbreekt om de data naar het display te krijgen? Kun je me een hint geven hoe dit in te bouwen in (ik denk) Soladin.h?
Dank Rob
Hoi Marcel,
VerwijderenHet is gelukt. De programmering zal wel geen schoonheidsprijs verdienen, maar het werkt. Als ik er iemand anders nog een plezier mee kan doen dan hoor ik het wel.
Hi Rob, Marcel,
VerwijderenOok aan deze kant ligt een Soladin600 te wachten op een 2e leven met een Arduino.
Ondertussen zit ik al enkele avonden te stoeien om de SolaDin library aan de praat te krijgen.
Indien mogelijk houd ik me aanbevolen voor de (complete) code!
Ook bij het gebruik van deze SolaDin lib in andere voorbeelden loop ik vast. Hebben jullie aanpassingen gemaakt aan deze lib?
(ander voorbeeld waarbij ik het ook niet werkend krijg: https://www.knuterboas.nl/doku.php/soladin_600_monitoring_using_esp8266_and_mqtt)
Alvast bedankt!
Hallo Rob,
VerwijderenOei, dat wordt ff zoeken. Ik ben op vakantie dus wordt volgende week. Herinner me als ik nog niets heb laten horen
Heb evt ook nog mijn oude kastje met Arduino+display van de soladin liggen...