One-KVM/testenv/linters/vulture-wl.py
Shantur Rathore e4903c5184
Implement button push using servo motors controlled via pwm (#55)
1. Add to /boot/config.txt
```
dtoverlay=pwm
```

2. Create /etc/udev/rules.d/99-kvmd-pwm.rules
```
SUBSYSTEM=="pwm*", ACTION=="add", RUN+="/bin/chgrp -R kvmd /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
SUBSYSTEM=="pwm*", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R kvmd /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
```

3. Connect Servo motor like SG90 PWM connection to RPi GPIO18, +5V and GND to a 5V and GND pin on header

4. Add to /etc/kvmd/override.yaml
```
kvmd:
    gpio:
        drivers:
            servo1:
                type: pwm
                pwm_chip: 0                  # PWM Chip Number
                pwm_period: 20000000         # Servo Motor SG90 Period in nano-seconds
                duty_cycle_push: 1500000     # Servo Motor SG90 duty_cycle for pushing button
                duty_cycle_release: 1000000  # Servo Motor SG90 duty_cycle for releasing button
        scheme:
            short_press:
                driver: servo1
                pin: 0                       # Pin number is the PWM channel number on the PWM Chip
                mode: output
                switch: false
                pulse:
                    delay: 0.5
                    max_delay: 2
            long_press:
                driver: servo1
                pin: 0                       # Pin number is the PWM channel number on the PWM Chip
                mode: output
                switch: false
                pulse:
                    delay: 2
                    max_delay: 2
            extra_long_press:
                driver: servo1
                pin: 0                       # Pin number is the PWM channel number on the PWM Chip
                mode: output
                switch: false
                pulse:
                    delay: 10
                    max_delay: 20
        view:
            header:
                title: Controls
            table:
                - ["#Servo - Short Press", "short_press|Press"]
                - ["#Servo - Long Press", "long_press|Press"]
                - ["#Servo - Extra Long Press", "extra_long_press|Press"]
```
2021-08-14 01:14:22 +03:00

44 lines
725 B
Python

InotifyMask.ACCESS
InotifyMask.ATTRIB
InotifyMask.CLOSE_WRITE
InotifyMask.CLOSE_NOWRITE
InotifyMask.CREATE
InotifyMask.DELETE
InotifyMask.DELETE_SELF
InotifyMask.MODIFY
InotifyMask.MOVE_SELF
InotifyMask.MOVED_FROM
InotifyMask.MOVED_TO
InotifyMask.OPEN
InotifyMask.IGNORED
InotifyMask.ISDIR
InotifyMask.Q_OVERFLOW
InotifyMask.UNMOUNT
IpmiServer.handle_raw_request
SpiDev.no_cs
SpiDev.cshigh
SpiDev.max_speed_hz
_AtxApiPart.switch_power
_KeyMapping.web_name
_KeyMapping.mcu_code
_KeyMapping.arduino_name
_KeyMapping.otg_key
_KeyMapping.ps2_key
_KeyMapping.at1_code
_KeyMapping.x11_keys
_SharedParams.width
_SharedParams.height
_Netcfg.net_ip
_Netcfg.net_mask
_Netcfg.dhcp_option_3
_ScriptWriter.get_args
_pwm.period_ns