telegraf modbus.input

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Ik ben bezig met modbus data uit te lezen dat de stroomsterkte meet. Dat wil ik door telegraf naar een influxdb sturen en dan met grafana grafieken van trekken.

Nu heb ik het erg rare probleem dat als ik telegraf test met
code:
1
2
3
root@stats:~# telegraf --debug  --config /etc/telegraf/telegraf.conf 
2022-04-04T20:25:08Z I! Starting Telegraf 1.21.4
^Croot@stats:~# systemctl restart telegraf

dat alles werkt, ik krijg netjes de data in influxdb. Dus ^C en dan systemctl restart telegraf ...

noppes. Er komt geen data meer binnen in influxdb. Als ik dan opnieuw telegraf --debug doe, dan werkt het weer wel zonder dat ik de config file aanpas. Heeft iemand een idee wat dit zou kunnen zijn?

Ik heb nog andere mqtt.inputs, die werken wel naar behoren. influxdb en grafana gebruik ik al langer voor verbruik thuis te meten. Het zit hem dus hoogstwaarschijnlijk in de inputs.modbus config

Dus onderstaande is het relevante gedeelte van /etc/telegraf/telegraf.conf

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[[inputs.modbus]]

   name = "test"
   name_suffix = "_test"
   data_format = "influx"

   slave_id = 3
   timeout = "1s"

    controller = "file:///dev/ttyUSB2"
    baud_rate = 9600
    data_bits = 8
    parity = "E"
    stop_bits = 1
    transmission_mode = "RTU"
   input_registers = [
     { name = "kookvuur",   byte_order = "AB",   data_type = "INT16",   scale=0.575,     address = [0]},
   ]
   name_override = "test"

edit:

scale=0.575 komt van de waarde die de CT geeft, dat moet je vermenigvuldigen met 0.0025, dan * 230(V). Vandaar dus 0.575


code:
1
2
3
4
5
root@stats:~# telegraf --debug  --config /etc/telegraf/telegraf.conf --test
2022-04-04T20:21:07Z I! Starting Telegraf 1.21.4
> cv,host=stats,topic=shellies/shellyplug-s-DD4CFE/relay/0/power value=61.85 1649103667093647571
> Test_test,host=stats,name=test,slave_id=3,type=input_register kookvuur=1308i 1649103667000000000
root@stats:~#


code:
1
2
3
4
5
6
7
8
> select * from "Test_test"
name: Test_test
time                host  kookvuur name     slave_id type
----                ----  -------- ----     -------- ----
1649103730000000000 stats 1306     Test 3        input_register
1649103735000000000 stats 1303     Test 3        input_register
1649103740000000000 stats 1301     Test 3        input_register
>

[ Voor 3% gewijzigd door bucovaina89 op 04-04-2022 22:34 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Nu online
Wat staat er in de logs als je telegraf als service start? Gebruik journalctl om de log voor telegraf te bekijken.

Ik wil wel een voorschot nemen: welke permissies heb je nodig voor /dev/ttyUSB2? En heeft de user waaronder telegraf als service draait die ook?

Waarschijnlijk niet, dus dan is dat je antwoord.

Educatieve vraag: waarom werkt het dan wel in je --debug-voorbeeld?

[ Voor 14% gewijzigd door Thralas op 04-04-2022 23:22 ]


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
aha aha aha, gelijk met jouw antwoord ben ik ook op permissies uitgekomen. Ik heb in /etc/systemd/system/multi-user.target.wants/telegraf.service User=telegraf veranderd door User=root en jawel hoor. /dev/ttyUSB2 zal idd niet leesbaar zijn voor de user telegraf!

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Bevestiging:

code:
1
chown telegraf:root /dev/ttyUSB2


en het werkt zoals verwacht!

Acties:
  • +2 Henk 'm!

  • Thralas
  • Registratie: December 2002
  • Nu online
Het netste is om dan een udev rule aan te maken.

Voorbeeldje:
code:
1
SUBSYSTEMS=="usb", ATTR{product}=="TTL-234X-5V-AJ", OWNER="foo", GROUP="foo"


Daar match ik op USB product string en zet owner en group.

Alle attributen waar je op kunt matchen kun je zien met iets als dit. (of udevadm monitor en opnieuw inprikken)

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
Ah dat is inderdaad veel netter, thx voor de tip!

Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
@Thralas
Zou ik bijv dit kunnen doen?

code:
1
SUBSYSTEMS=="usb-serial", DRIVERS=="ch341-uart", OWNER="telegraf", GROUP="root"


Enige vervelende is dat niet echt de serienummer van dat ding is.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
root@stats:~# udevadm info -a -n /dev/ttyUSB0                                                                                                                                                                                        [203/203]
                                                                                                                                                                                                                                              
Udevadm info starts with the device specified by the devpath and then                                                                                                                                                                         
walks up the chain of parent devices. It prints for every device                                                                                                                                                                              
found, all possible attributes in the udev rules key format.                                                                                                                                                                                  
A rule to match, can be composed by the attributes of the device                                                                                                                                                                              
and the attributes from one single parent device.                                                                                                                                                                                             
                                                                                                                                                                                                                                              
  looking at device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0':                                                                                                                                          
    KERNEL=="ttyUSB0"                                                                                                                                                                                                                         
    SUBSYSTEM=="tty"                                                                                                                                                                                                                          
    DRIVER==""                                                                                                                                                                                                                                
    ATTR{power/async}=="disabled"                                                                                                                                                                                                             
    ATTR{power/control}=="auto"                                                                                                                                                                                                               
    ATTR{power/runtime_active_kids}=="0"                                                                                                                                                                                                      
    ATTR{power/runtime_active_time}=="0"                                                                                                                                                                                                      
    ATTR{power/runtime_enabled}=="disabled"                                                                                                                                                                                                   
    ATTR{power/runtime_status}=="unsupported"                                                                                                                                                                                                 
    ATTR{power/runtime_suspended_time}=="0"                                                                                                                                                                                                   
    ATTR{power/runtime_usage}=="0"                                                                                                                                                                                                            
                                                                                                                                                                                                                                              
  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0':                                                                                                                                               
    KERNELS=="ttyUSB0"                                                                                                                                                                                                                        
    SUBSYSTEMS=="usb-serial"                                                                                                                                                                                                                  
    DRIVERS=="ch341-uart"                                                                                                                                                                                                                     
    ATTRS{port_number}=="0"                                                                                                                                                                                                                   
    ATTRS{power/async}=="enabled"                                                                                                                                                                                                             
    ATTRS{power/control}=="auto"                                                                                                                                                                                                              
    ATTRS{power/runtime_active_kids}=="0"                                                                                                                                                                                                     
    ATTRS{power/runtime_active_time}=="0"                                                                                                                                                                                                     
    ATTRS{power/runtime_enabled}=="disabled"                                                                                                                                                                                                  
    ATTRS{power/runtime_status}=="unsupported"                                                                                                                                                                                                
    ATTRS{power/runtime_suspended_time}=="0"                                                                                                                                                                                                  
    ATTRS{power/runtime_usage}=="0"                                                                                                                                                                                                           
                                                                                                                                                                                                                                              
  looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0':                                                                                                                                                       
    KERNELS=="1-1.2:1.0"                                                                                                                                                                                                                      
    SUBSYSTEMS=="usb"                                                                                                                                                                                                                         
    DRIVERS=="ch341"                                                                                                                                                                                                                          
    ATTRS{authorized}=="1"                                                                                                                                                                                                                    
    ATTRS{bAlternateSetting}==" 0"                                                                                                                                                                                                            
    ATTRS{bInterfaceClass}=="ff"                                                                                                                                                                                                              
    ATTRS{bInterfaceNumber}=="00"                                                                                                                                                                                                             
    ATTRS{bInterfaceProtocol}=="02"                                                                                                                                                                                                           
    ATTRS{bInterfaceSubClass}=="01"                                                                                                                                                                                                           
    ATTRS{bNumEndpoints}=="03"                                                                                                                                                                                                                
    ATTRS{power/async}=="enabled"                                                                                                                                                                                                             
    ATTRS{power/runtime_active_kids}=="0"                                                                                                                                                                                                     
    ATTRS{power/runtime_enabled}=="enabled"                                                                                                                                                                                                   
    ATTRS{power/runtime_status}=="suspended"                                                                                                                                                                                                  
    ATTRS{power/runtime_usage}=="0"                                                                                                                                                                                                           
    ATTRS{supports_autosuspend}=="1"

Acties:
  • +1 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
@Thralas : nm, it works, dit moest ik hebben :)

code:
1
2
3
4
5
6
7
8
9
10
11
root@stats:~# cat /etc/udev/rules.d/grid.rules 
SUBSYSTEMS=="usb-serial", DRIVERS=="ch341-uart", OWNER="telegraf", GROUP="root"

# ik trek de usbstick uit

# ik steek hem terug in
root@stats:~# ls -lah /dev/ttyUSB0 
crw------- 1 telegraf root 188, 0 Apr 13 19:49 /dev/ttyUSB0
root@stats:~# 

# /dev/ttyUSB0 is niet meer van root:root, maar telegraf:root

Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:43

Hero of Time

Moderator LNX

There is only one Legend

Je had ook eenvoudigweg de gebruiker 'telegraf' lid kunnen maken van de 'dialout' groep, want standaard zou ttyUSB0, als het een serial device is, van de groep dialout moeten zijn.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 27-07 17:55
@Hero of Time : idd, dat had het probleem ook opgelost.
Pagina: 1