Proxmox en USB naar MQTT

Pagina: 1
Acties:
  • 2.153 views

Vraag


Acties:
  • +1 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
Ik heb een werkende proxmox server die wil gebruiken om een slimme meter uit te lezen via een usb p1 kabel. Die data mag dan via MQTT naaar Home Assistant

De p1 kabel aan mijn Iskra AM 550 werkt op een Windows laptop met 115200 8N1 (ik ze de data voorbij komen)

Nu probeer ik die stick te forwarden naar de LXC container

Edit, hieronder de oplossing van @Zenix

Zoek eerst de juiste hardware ID's

code:
1
2
lsusb
Bus 001 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC


code:
1
2
ls -la /dev/bus/usb/001/003
crw-rw-rw- 1 root users 189, 14 Jul 19 19:40 /dev/bus/usb/001/003


Ga naar de PVE shell in proxmox

code:
1
2
nano /etc/udev/rules.d/50-myusb.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666",


en edit de config van je LXC (juiste nummer invoeren bij 112)

code:
1
2
3
nano /etc/pve/nodes/pve/lxc/112.conf
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file


Reboot nu de hele PVE node
Nu kan je de LXC afconfigureren
Eventueel testen met: cu -l /dev/ttyUSB0 -s 115200 --parity=none -E q
Hier kan je uit met q.

[ Voor 41% gewijzigd door Woodski op 10-08-2021 09:21 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
Ok op de host krijg ik er nu data uit
cu -l /dev/ttyUSB0 -s 115200 --parity=none

Zodra ik weer tijd heb ga ik er over nadenken hoe ik dat doorsluis naar de LXC

Acties:
  • 0 Henk 'm!

  • Zenix
  • Registratie: Maart 2004
  • Laatst online: 18:17

Zenix

BOE!

Hoor graag of je al verder bent gekomen, ben dit namelijk ook van plan om te gaan doen.

Acties:
  • 0 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
Nee nog geen tijd voor gehad helaas
Zodra het weer rustig is ga ik het weer proberen
Maar de poort is dus ttyUSB0 het zou niet moeilijk moeten zijn

Acties:
  • 0 Henk 'm!

  • Zenix
  • Registratie: Maart 2004
  • Laatst online: 18:17

Zenix

BOE!

Misschien heb je hier wat aan:
https://forum.proxmox.com...hrough-zwave-stick.30058/
https://www.xmodulo.com/c...ice-permission-linux.html

Permissies hoef je niet te doen als een privileged container gebruikt. Met unprivileged moet je dus die udevs regels maken. Als ik mijn P1 kabel krijg ga ik het ook proberen.

Acties:
  • +1 Henk 'm!

  • wpeterw
  • Registratie: Oktober 2008
  • Laatst online: 05-06 17:08
Waarom doe je dit niet gewoon vanuit de GUI ? Daar krijg je gewoon een dropdown waar je een device selecteert. Ik doe hetzelfde maar net iets anders: dsmr reader draait in een docker-container in een vm. Ik forward de P1 usb dus 2 keer.

PV Output


Acties:
  • 0 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
@wpeterw Ik wil liever een LXC omdat deze minimale resources gebruiken

Acties:
  • 0 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
Ik heb het voor nu even opgegeven en heb een VM gemaakt
Dit werkt hoewel ik nog niet klaar ben. Dus ik zie de stick uit de VM

CPU usage is rond 0.2% in rust
Dat lijkt weinig en dat is het misschien ook, maar..
In een LXC is het maar 0.03%

Acties:
  • +3 Henk 'm!

  • Zenix
  • Registratie: Maart 2004
  • Laatst online: 18:17

Zenix

BOE!

Ik ben er ook mee bezig geweest. Debian LXC container op Promox 6.4. Voor 7.0 moet je lxc.cgroup2.devices.allow gebruiken

USB device opzoeken
code:
1
2
3
4
5
lsusb
Bus 001 Device 015: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

ls -la /dev/bus/usb/001/015
crw-rw-rw- 1 root users 189, 14 Jul 19 19:40 /dev/bus/usb/001/015


udev permissie goedzetten, zie idVendor en idProduct
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
lsusb -vvv
Bus 001 Device 015: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6001 FT232 Serial (UART) IC

vi /etc/udev/rules.d/50-myusb.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666",

udevadm control --reload-rules
udevadm trigger


Na de udev rule werkt het ook via de proxmox host.

Toevoegen aan de lxc container. Ik heb gewoon de hele bus doorgegeven. Zodat ik alle usb apparaten kon zien
code:
1
2
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb/001 dev/bus/usb/001 none bind,optional,create=dir


Apparaten bekijken in de container. En Cu proberen
code:
1
2
3
4
5
6
7
8
9
10
11
12
docker@Docker:/dev/bus/usb/001$ ls -l
total 0
crw-rw-r-- 1 root root  189,  0 Jul 19 19:40 001
crw-rw-r-- 1 root root  189,  2 Jul 19 19:40 003
crw-rw-r-- 1 root   118 189, 11 Jul 19 20:01 012
crw-rw-rw- 1 root users 189, 14 Jul 19 19:40 015

cu -l /dev/bus/usb/001/015 -s 115200 --parity=none
Connected.
`        -      @@cu: Got hangup signal

Disconnected.


Ik weet het dus ook niet meer, kom er wel bij maar krijg een vage foutmelding.

Edit het is nu wel gelukt _/-\o_ In plaats van het usb bus mounten, het device zelf gaan mounten.
code:
1
2
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file


@Woodski Ik hoop dat je hier wat aan hebt. Je moet sowieso zorgen dat het udev verhaal goed staat, dan zal de permissie errors oplossen. https://www.xmodulo.com/c...ice-permission-linux.html

[ Voor 12% gewijzigd door Zenix op 19-07-2021 20:32 ]


Acties:
  • +1 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
Heel mooi dit werkt nu ook voor mij
HA in een LXC met een mount voor het device
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
Wel even de hele node rebooten

Dan Home Assistant updaten naar versie 2021.7.4
device toevoegen: DSMR, serial, ttyUSB0 en versie 4 voor mijn AM550
Dan ziet hij de elektra en gas meters, heel fijn :)

Ik had al DSMR-reader draaien in een VM die dan via MQTT de waardes doorgaf aan HA
Heel mooi met heel veel detail maar de oplossing direct naar HA is voldoende voor mij
Scheelt weer resources hoewel het jeukt om het toch te gebruiken

Edit
De AM550 is versie 5

Acties:
  • 0 Henk 'm!

  • Joriempie
  • Registratie: Mei 2013
  • Laatst online: 02-03 13:56
Zenix schreef op maandag 19 juli 2021 @ 20:08:
Ik ben er ook mee bezig geweest. Debian LXC container op Promox 6.4. Voor 7.0 moet je lxc.cgroup2.devices.allow gebruiken

USB device opzoeken
code:
1
2
3
4
5
lsusb
Bus 001 Device 015: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC

ls -la /dev/bus/usb/001/015
crw-rw-rw- 1 root users 189, 14 Jul 19 19:40 /dev/bus/usb/001/015


udev permissie goedzetten, zie idVendor en idProduct
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
lsusb -vvv
Bus 001 Device 015: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0403 Future Technology Devices International, Ltd
  idProduct          0x6001 FT232 Serial (UART) IC

vi /etc/udev/rules.d/50-myusb.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666",

udevadm control --reload-rules
udevadm trigger


Na de udev rule werkt het ook via de proxmox host.

Toevoegen aan de lxc container. Ik heb gewoon de hele bus doorgegeven. Zodat ik alle usb apparaten kon zien
code:
1
2
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb/001 dev/bus/usb/001 none bind,optional,create=dir


Apparaten bekijken in de container. En Cu proberen
code:
1
2
3
4
5
6
7
8
9
10
11
12
docker@Docker:/dev/bus/usb/001$ ls -l
total 0
crw-rw-r-- 1 root root  189,  0 Jul 19 19:40 001
crw-rw-r-- 1 root root  189,  2 Jul 19 19:40 003
crw-rw-r-- 1 root   118 189, 11 Jul 19 20:01 012
crw-rw-rw- 1 root users 189, 14 Jul 19 19:40 015

cu -l /dev/bus/usb/001/015 -s 115200 --parity=none
Connected.
`        -      @@cu: Got hangup signal

Disconnected.


Ik weet het dus ook niet meer, kom er wel bij maar krijg een vage foutmelding.

Edit het is nu wel gelukt _/-\o_ In plaats van het usb bus mounten, het device zelf gaan mounten.
code:
1
2
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file


@Woodski Ik hoop dat je hier wat aan hebt. Je moet sowieso zorgen dat het udev verhaal goed staat, dan zal de permissie errors oplossen. https://www.xmodulo.com/c...ice-permission-linux.html
toon volledige bericht
Thanks! Ik kwam er ook niet uit. Ik heb exact hetzelfde kabeltje volgens mij aan de Vendor & Product ID te zien.

Overigens moest ik op de PVE host nog wel een simpele chmod 666 op de /dev/ttyUSB0 doen.

Acties:
  • 0 Henk 'm!

  • Zenix
  • Registratie: Maart 2004
  • Laatst online: 18:17

Zenix

BOE!

Joriempie schreef op woensdag 4 augustus 2021 @ 16:43:
[...]


Thanks! Ik kwam er ook niet uit. Ik heb exact hetzelfde kabeltje volgens mij aan de Vendor & Product ID te zien.

Overigens moest ik op de PVE host nog wel een simpele chmod 666 op de /dev/ttyUSB0 doen.
Wanneer je het udev stuk doet is dat niet nodig en is het ook persistent bij reboot.

Acties:
  • 0 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
Helaas viel bij mij de communicatie met de HassIO LXC steeds weg.
Nu gaat de data eerst naar een DSMR reader LXC wat raar genoeg wel stabiel is.
En dan gaat het via MQTT naar HassIO

Acties:
  • +1 Henk 'm!

  • Joriempie
  • Registratie: Mei 2013
  • Laatst online: 02-03 13:56
Zenix schreef op woensdag 4 augustus 2021 @ 19:23:
[...]


Wanneer je het udev stuk doet is dat niet nodig en is het ook persistent bij reboot.
Thanks! Ik was de reboot vergeten vrees ik. Het werkt nu als de brandweer! _/-\o_

Acties:
  • +1 Henk 'm!

  • Woodski
  • Registratie: Maart 2006
  • Laatst online: 07-06 09:47
Omdat serial naar LXC overal werkt behalve bij HA heb ik het nogmaals getest.
Ik had versie 4 gekozen voor de AM550. Nu met versie 5 blijft het wel werken.

Het CPU verbruik neemt bij mij dan ca 0.03% toe
Dat is een stuk minder dan de dik 0,1% van DSMR

Het werkt ook met een Zigbee stick naar LXC (ttyACM0)
Ook hier dezelfde stappen die Zenix beschreef
Het CPU verbruik is hier 0,008% voor de hele zigbee2mqtt LXC

En de mqtt LXC zelf gebruikt ook bijna niets met ongeveer 0,011 %

Acties:
  • 0 Henk 'm!

  • DJanmaat
  • Registratie: Mei 2024
  • Laatst online: 17-05 16:13

Proxmox USB passthrough LXC container / virtual machine

Het doel is het beschikbaar maken van een USB device (USB-P1, Zigbee-USB, Z-Wave-USB, e.d.) in een LXC container of virtuele machine. Er zijn veel variabelen in het spel en daarmee niet uitgesloten dat de configuratie voor jou anders is.

Mogelijkheden passthrough
  • USB poort
  • Vendor Id, Product Id
  • Serienummer
Best practice is configuratie Vendor Id & Device Id/serienummer ivm. onafhankelijkheid USB poort.

Benodigde informatie
Afhankelijk hoe passthrough geconfigureerd wordt.
  • Proxmox VMID
  • USB Vendor Id, Product Id
  • USB serienummer
  • USB poort
code: VMID :
1
qm list && pct list

code: USB :
1
udevadm info -a -p $(udevadm info -q path -n /dev/bus/usb/003/006) | grep 'SUBSYSTEM\|product\|serial\|devpath\|idProduct\|idVendor'


Voorbeeld
Afbeeldingslocatie: https://tweakers.net/i/vRwyp9OrusC5vok3kjb4EiCfH4A=/800x/filters:strip_exif()/f/image/HyvR5Vtl8w6BkYYqp0OTrpAd.png?f=fotoalbum_large

Type poortSUBSYSTEM=="usb"
PoortATTR{devpath}=="4.1"
Product IdATTR{idProduct}=="6001"
Vendor IdATTR{idVendor}=="0403"
Device informatieATTR{product}=="FT232R USB UART"
SerienummerATTR{serial}=="AQ6WC8DY"

Afbeeldingslocatie: https://tweakers.net/i/TCVGwY8h1bGORcaqjpdhAHfDM1I=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/0D04PJ0l90CNm5GGLmyASdus.png?f=user_large

UDEV (LXC containers)
code: Proxmox; configureer UDEV :
1
echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="WIJZIG", ATTRS{idProduct}=="WIJZIG", ATTRS{serial}=="WIJZIG", SYMLINK+="ttyUSB-P1"' >> /etc/udev/rules.d/99-usb-serial.rules && service udev reload && udevadm trigger && cat /etc/udev/rules.d/99-usb-serial.rules

code: controle :
1
cat /etc/udev/rules.d/99-usb-serial.rules

code: handmatig wijzigen :
1
sudo apt install nano -y && nano /etc/udev/rules.d/99-usb-serial.rules

Documentatie UDEV

LXC containers / virtual machines USB passthrough
Voor virtual machines zie :
Documentatie USB passthrough virtual machines

Voor LXC containers :
code: Proxmox; USB bus :
1
lsusb

Afbeeldingslocatie: https://tweakers.net/i/3C0lc3rBRGGII2C2CdUxHqET-OI=/800x/filters:strip_exif()/f/image/SXTL2e1DI3FR2j8dQd55dtI3.png?f=fotoalbum_large

code: Proxmox; Wijzig 'bus' en 'device' :
1
ls -l /dev/bus/usb/003/006

Afbeeldingslocatie: https://tweakers.net/i/Co3Ta6tb62sxWSUTnae5KxyTAug=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/SFXeoSL7B05uGLWpknu5fcAD.png?f=user_large

code: Proxmox; Wijzig LXC configuratie en herstart LXC container
1
VMID=WIJZIG && echo 'lxc.cgroup.devices.allow: c 189:* rwm' >> /etc/pve/lxc/$VMID.conf | echo 'lxc.mount.entry: /dev/ttyUSB-P1 dev/ttyUSB-P1 none bind,optional,create=file' >> /etc/pve/lxc/$VMID.conf && cat /etc/pve/lxc/$VMID.conf && pct reboot $VMID

Afbeeldingslocatie: https://tweakers.net/i/a5zwwdIuQsCgLXm3gBpieHa7ZpM=/800x/filters:strip_exif()/f/image/0YWsW2YZiRVdVoBO3MtdFC0G.png?f=fotoalbum_large

LXC container; controleer koppeling USB device (ls /dev/ttyUSB-P1) :
Afbeeldingslocatie: https://tweakers.net/i/t2fQSh8tP2p9eAJ17veE5wBUPNA=/800x/filters:strip_exif()/f/image/4Arg5vwyJBtwhBlohTD47mth.png?f=fotoalbum_large

Het USB device /dev/ttyUSB-P1 kan nu binnen de LXC container voor jouw service gebruikt worden.

Zie ook documentatie voor Domoticz waar het meerendeel in beschreven staat.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 22:28

Hero of Time

Moderator LNX

There is only one Legend

@DJanmaat, leuk en aardig, degelijke informatie, maar het had beter geweest om dit in een los topic te plaatsen dan een oude koe uit de sloot te halen. Ik stop die weer terug.

Topic op slot. Zonde, want de info wordt nu iets slechter te vinden maar wil ook niet dat er constant reacties bij komen in een gekaapt topic.

Ps, je blauwe tekst is praktisch onleesbaar met darkmode.

Commandline FTW | Tweakt met mate

Pagina: 1

Dit topic is gesloten.