Stromzähler per RS485 (Modbus) mittels Raspberry Pi

Hallo,

nach ich meine Stromzähler mittel RS485 und Modbus erfolgreich auslese, ist die Überlegung, diese USB-Wandler auf meinen Raspberry zu verlegen. Weiterhin soll der IPS-Server ortsverändert werden an eine Stelle, die klimatisch besser geeignet ist als die jetzige. Allerdings gibt es dort nur Strom und einen Netzwerkanschluß. Deswegen möchte ich von allen USB-Anschaltungen trennen.

Hat das schon jemand gemacht? Geht das überhaupt? Schick wäre natürlich, die Abfrage aus IPS auf Modbus zu lassen.

Über Modbus steht hierschon was, aber leider nicht über RS485.

Hierkann man Relais schalten sogar ohne einen USB-Wandler, was natürlich auch seinen Reiz hat.

Habe im Internet zwar von zusätzlichen Boards für den Pi gelesen. Weil ich mit dem Pi erst langsam starte, sind meine Erkenntnisse in Sachen Linux beschränkt. Allerdings wird der Stick schon mal erkannt.

lsusb:

Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter

dmesg:

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.12.22+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #691 PREEMPT Wed Jun 18 18:29:58 BST 2014
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: BCM2708
[    0.000000] cma: CMA: reserved 8 MiB at 1b800000
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 114688
[    0.000000] free_area_init_node: node 0, pgdat c05fcdf0, node_mem_map c06ae000
[    0.000000]   Normal zone: 896 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 114688 pages, LIFO batch:31
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 113792
[    0.000000] Kernel command line: dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0xe bcm2708.serial=0xc5d2ec2c smsc95xx.macaddr=B8:27:EB:D2:EC:2C sdhci-bcm2708.emmc_clock_freq=250000000 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000  dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 439664K/458752K available (4376K kernel code, 238K rwdata, 1340K rodata, 143K init, 701K bss, 19088K reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xdc800000 - 0xff000000   ( 552 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xdc000000   ( 448 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc059d54c   (5718 kB)
[    0.000000]       .init : 0xc059e000 - 0xc05c1ee4   ( 144 kB)
[    0.000000]       .data : 0xc05c2000 - 0xc05fd900   ( 239 kB)
[    0.000000]        .bss : 0xc05fd90c - 0xc06ad0f8   ( 702 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:394
[    0.000000] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 4294967ms
[    0.000000] Switching to timer-based delay loop
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [tty1] enabled
[    0.001268] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
[    0.001330] pid_max: default: 32768 minimum: 301
[    0.001825] Mount-cache hash table entries: 512
[    0.002660] Initializing cgroup subsys memory
[    0.002768] Initializing cgroup subsys devices
[    0.002807] Initializing cgroup subsys freezer
[    0.002840] Initializing cgroup subsys blkio
[    0.002983] CPU: Testing write buffer coherency: ok
[    0.003446] Setting up static identity map for 0xc0427670 - 0xc04276cc
[    0.005365] devtmpfs: initialized
[    0.022099] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5
[    0.023694] NET: Registered protocol family 16
[    0.029087] DMA: preallocated 4096 KiB pool for atomic coherent allocations
[    0.029771] cpuidle: using governor ladder
[    0.029816] cpuidle: using governor menu
[    0.030418] bcm2708.uart_clock = 0
[    0.032246] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers.
[    0.032300] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.032337] mailbox: Broadcom VideoCore Mailbox driver
[    0.032439] bcm2708_vcio: mailbox at f200b880
[    0.032546] bcm_power: Broadcom power driver
[    0.032584] bcm_power_open() -> 0
[    0.032610] bcm_power_request(0, 8)
[    0.533332] bcm_mailbox_read -> 00000080, 0
[    0.533372] bcm_power_request -> 0
[    0.533602] Serial: AMBA PL011 UART driver
[    0.533772] dev:f1: ttyAMA0 at MMIO 0x20201000 (irq = 83, base_baud = 0) is a PL011 rev3
[    0.892008] console [ttyAMA0] enabled
[    0.918879] bio: create slab <bio-0> at 0
[    0.924392] SCSI subsystem initialized
[    0.928389] usbcore: registered new interface driver usbfs
[    0.934087] usbcore: registered new interface driver hub
[    0.939649] usbcore: registered new device driver usb
[    0.946282] Switched to clocksource stc
[    0.950540] FS-Cache: Loaded
[    0.953696] CacheFiles: Loaded
[    0.969410] NET: Registered protocol family 2
[    0.974912] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.982319] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.988892] TCP: Hash tables configured (established 4096 bind 4096)
[    0.995342] TCP: reno registered
[    0.998638] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    1.004509] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    1.011262] NET: Registered protocol family 1
[    1.016186] RPC: Registered named UNIX socket transport module.
[    1.022243] RPC: Registered udp transport module.
[    1.027004] RPC: Registered tcp transport module.
[    1.031723] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.039104] bcm2708_dma: DMA manager at f2007000
[    1.043841] bcm2708_gpio: bcm2708_gpio_probe c05cfed0
[    1.049404] vc-mem: phys_addr:0x00000000 mem_base=0x1ec00000 mem_size:0x20000000(512 MiB)
[    1.059011] audit: initializing netlink socket (disabled)
[    1.064514] type=2000 audit(0.910:1): initialized
[    1.231115] VFS: Disk quotas dquot_6.5.2
[    1.235384] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.244395] FS-Cache: Netfs 'nfs' registered for caching
[    1.251355] NFS: Registering the id_resolver key type
[    1.256638] Key type id_resolver registered
[    1.260845] Key type id_legacy registered
[    1.265610] msgmni has been set to 874
[    1.271421] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    1.279286] io scheduler noop registered
[    1.283241] io scheduler deadline registered (default)
[    1.288835] io scheduler cfq registered
[    1.294004] BCM2708FB: allocated DMA memory 5bc00000
[    1.299187] BCM2708FB: allocated DMA channel 0 @ f2007000
[    1.324185] Console: switching to colour frame buffer device 82x26
[    1.334333] uart-pl011 dev:f1: no DMA platform data
[    1.341421] vc-cma: Videocore CMA driver
[    1.346816] vc-cma: vc_cma_base      = 0x00000000
[    1.352819] vc-cma: vc_cma_size      = 0x00000000 (0 MiB)
[    1.359556] vc-cma: vc_cma_initial   = 0x00000000 (0 MiB)
[    1.375525] brd: module loaded
[    1.385226] loop: module loaded
[    1.389990] vchiq: vchiq_init_state: slot_zero = 0xdb800000, is_master = 0
[    1.399163] Loading iSCSI transport class v2.0-870.
[    1.406641] usbcore: registered new interface driver smsc95xx
[    1.414112] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    1.621531] Core Release: 2.80a
[    1.625964] Setting default values for core params
[    1.632098] Finished setting default values for core params
[    1.838986] Using Buffer DMA mode
[    1.843525] Periodic Transfer Interrupt Enhancement - disabled
[    1.850631] Multiprocessor Interrupt Enhancement - disabled
[    1.857505] OTG VER PARAM: 0, OTG VER FLAG: 0
[    1.863108] Dedicated Tx FIFOs mode
[    1.868228] WARN::dwc_otg_hcd_init:1042: FIQ DMA bounce buffers: virt = 0xdbc14000 dma = 0x5bc14000 len=9024
[    1.880725] FIQ FSM acceleration enabled for :
[    1.880725] Non-periodic Split Transactions
[    1.880725] Periodic Split Transactions
[    1.880725] High-Speed Isochronous Endpoints
[    1.902648] dwc_otg: Microframe scheduler enabled
[    1.902743] WARN::hcd_init:473: FIQ at 0xc03080cc
[    1.908862] WARN::hcd_init:474: FIQ ASM at 0xc0308348 length 36
[    1.916152] WARN::hcd_init:500: MPHI regs_base at 0xdc806000
[    1.923187] dwc_otg bcm2708_usb: DWC OTG Controller
[    1.929443] dwc_otg bcm2708_usb: new USB bus registered, assigned bus number 1
[    1.938100] dwc_otg bcm2708_usb: irq 32, io mem 0x00000000
[    1.944916] Init: Port Power? op_state=1
[    1.950156] Init: Power Port (0)
[    1.954923] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.963080] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.971664] usb usb1: Product: DWC OTG Controller
[    1.977685] usb usb1: Manufacturer: Linux 3.12.22+ dwc_otg_hcd
[    1.984808] usb usb1: SerialNumber: bcm2708_usb
[    1.991485] hub 1-0:1.0: USB hub found
[    1.996705] hub 1-0:1.0: 1 port detected
[    2.002341] dwc_otg: FIQ enabled
[    2.002358] dwc_otg: NAK holdoff enabled
[    2.002368] dwc_otg: FIQ split-transaction FSM enabled
[    2.002388] Module dwc_common_port init
[    2.002832] usbcore: registered new interface driver usb-storage
[    2.010569] mousedev: PS/2 mouse device common for all mice
[    2.018149] bcm2835-cpufreq: min=700000 max=700000 cur=700000
[    2.025264] bcm2835-cpufreq: switching to governor powersave
[    2.032266] bcm2835-cpufreq: switching to governor powersave
[    2.039320] sdhci: Secure Digital Host Controller Interface driver
[    2.046781] sdhci: Copyright(c) Pierre Ossman
[    2.052446] sdhci: Enable low-latency mode
[    2.096529] mmc0: SDHCI controller on BCM2708_Arasan [platform] using platform's DMA
[    2.107096] mmc0: BCM2708 SDHC host at 0x20300000 DMA 2 IRQ 77
[    2.114334] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.121512] ledtrig-cpu: registered to indicate activity on CPUs
[    2.131147] hidraw: raw HID events driver (C) Jiri Kosina
[    2.145511] usbcore: registered new interface driver usbhid
[    2.152605] usbhid: USB HID core driver
[    2.162510] TCP: cubic registered
[    2.169306] Initializing XFRM netlink socket
[    2.177055] NET: Registered protocol family 17
[    2.183125] Key type dns_resolver registered
[    2.196529] Indeed it is in host mode hprt0 = 00021501
[    2.206528] registered taskstats version 1
[    2.216991] Waiting for root device /dev/mmcblk0p2...
[    2.248453] mmc0: read SD Status register (SSR) after 2 attempts
[    2.276399] mmc0: new high speed SDHC card at address aaaa
[    2.295985] mmcblk0: mmc0:aaaa SL16G 14.8 GiB 
[    2.303559]  mmcblk0: p1 p2
[    2.416445] usb 1-1: new high-speed USB device number 2 using dwc_otg
[    2.424924] Indeed it is in host mode hprt0 = 00001101
[    2.636726] usb 1-1: New USB device found, idVendor=0424, idProduct=9514
[    2.646205] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    2.655935] hub 1-1:1.0: USB hub found
[    2.661264] hub 1-1:1.0: 5 ports detected
[    2.913063] EXT4-fs (mmcblk0p2): recovery complete
[    2.921232] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.932057] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    2.940553] devtmpfs: mounted
[    2.945421] Freeing unused kernel memory: 140K (c059e000 - c05c1000)
[    2.953460] usb 1-1.1: new high-speed USB device number 3 using dwc_otg
[    3.076806] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
[    3.085675] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.097588] smsc95xx v1.0.4
[    3.162609] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:d2:ec:2c
[    3.256560] usb 1-1.3: new full-speed USB device number 4 using dwc_otg
[    3.379944] usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523
[    3.389031] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[    3.398134] usb 1-1.3: Product: USB2.0-Serial
[    4.411034] udevd[157]: starting version 175
[    5.911850] usbcore: registered new interface driver usbserial
[    5.998024] usbcore: registered new interface driver usbserial_generic
[    6.206607] usbserial: USB Serial support registered for generic
[    6.328797] usbcore: registered new interface driver ch341
[    6.336162] usbserial: USB Serial support registered for ch341-uart
[    6.678279] bcm2708-i2s bcm2708-i2s.0: Failed to create debugfs directory
[    6.838074] ch341 1-1.3:1.0: ch341-uart converter detected
[    7.008383] usb 1-1.3: ch341-uart converter now attached to ttyUSB0
[   11.225089] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[   11.709768] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[   17.416050] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[   20.449283] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[   22.060949] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[   25.809456] Adding 102396k swap on /var/swap.  Priority:-1 extents:1 across:102396k SSFS

Hallo,

so viele Leute haben sich das angesehen und niemand weiß einen Rat? Kann ich davon ausgehen, dass wenn sich der Adapter im Lunix unter /ttyUSB0 einnistet dieser auch vom Kernel erfoglreich erkannt wurde?

Im IPS kann ich diesen seriellen Port auch auswählen. Nur das Auslesen der Daten geht nicht. Mit dem gleichen Stick und Einstellungen klappt das allerdings bei Windows-IPS ohne Sorgen. So dass ich die Hardware ausschließe.

Was mache ich falsch bzw. wo kann ich suchen?

lsusb und dmesg siehe Beitrag 1

Sitze gerade vor dem gleichen Problem … selbst mit cat <dev/ttyUSB0 kommt da nichts. Auch beunruhigend: Wenn ich den Stick einstecke, bootet der Raspi erst mal neu.

lsusb liefert:
QinHeng Electronics HL-340 USB-Serial adapter

zu finden unter:
/dev/ttyUSB0

Ah, ich glaube, ich habe das problem gefunden:

  • Installiere minicom mit apt-get
  • Dann minicom -s
  • /dev/ttyUSB0 einstellen und 19200 b N 1 Flow OFF
  • als dfl speichern

das konfiguriert den Adapter richtig. Bei mir kommen jetzt zumindest Daten an…

Hallo,

guckt euch mal das Programm ‚ser2net‘ an.
Damit lassen sich serielle Geraete ueber ethernet routen.
Der Dienst laeuft auf dem Raspberry. Von IPS kann man dann per Client Socket auf die serielle Schnittstelle zugreifen.

Gruss, Michael

Hallo,
bist du mit dem USB-RS485 Problem auf dem Raspberry weitergekommen? Ich nutze einen USB-RS232 Wandler, welcher problemlos funktioniert und einen USB RS485 Wandler, welcher unter IPS keine Daten empfängt.
Bin total ratlos…
Gruß,
Rayk

Hallo,
ich habe heute ein Update auf meinen PI laufen lassen. Jetzt ist die Taste Optionen da. Haecken ist entfernt,
Bei Inkludieren meldet sich der Button immer noch als unbekannt an.

an bei der Debug:

Es werden nach Laden der Klassen 16 unterstützt.

Die Signale des Buttons kommen jetzt rein.

Frage :
1.Ist die Kommunikation zwischen Button und Z-Wave Gateway jetzt noch verschlüsselt oder offen? (Wenn das Häckchen entfernt ist)
2. Kann das Häckchen für weitere Anmeldungen jetzt wieder gesetzt werden? Und hat das dann Einfluss auf die Kommunikation mit den Geräten die mit entfernten Häckchen angelernt wurden z.B. der Button?