Giter Club home page Giter Club logo

octorelay's People

Contributors

bastienstefani avatar borisbu avatar deymos42 avatar hcooper avatar jneilliii avatar patrickcollins12 avatar robintail avatar skobkars avatar sydrbloc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

octorelay's Issues

Warning option for switch off

Working great,
Is it possible to have a option by relay for a warning message when you switch off?
useful for the power of the printer.

Thanks for the works

Orange pi and Octorelay

I am trying to make Octorelay work with an OrangePi instead of a Raspberry Pi.

so far i managed to get some kind of answer but definitely not working properly and I am running out of ideas.

The modificaitons I did to the init.py file where:

import orangepi.winplus library (definition of my board GPIO pinout)
change from RPi to OPi library
use orangepiwinplus.BOARD mode for the pin mapping of my specific model.

I defined a pin to be an output (my intention is to have a light that I can swicht on and off) and when the system boots I can see the output is activated but I cannot change it later on octoprint.

In Octoprint log I keep having this error:

2022-04-23 12:13:32,723 - octoprint.server.api - ERROR - Error while executing SimpleApiPlugin octorelay
Traceback (most recent call last):
File "/home/itu/OctoPrint/venv/lib/python3.8/site-packages/octoprint/server/api/init.py", line 158, in pluginCommand
response = api_plugin.on_api_command(command, data)
File "/home/itu/OctoPrint/venv/lib/python3.8/site-packages/octoprint/util/init.py", line 1737, in wrapper
return f(*args, **kwargs)
File "/home/itu/OctoPrint/venv/lib/python3.8/site-packages/octoprint_octorelay/init.py", line 245, in on_api_command
GPIO.setup(relay_pin, GPIO.OUT)
File "/home/itu/OctoPrint/venv/lib/python3.8/site-packages/OPi/GPIO.py", line 469, in setup
raise RuntimeError("Channel {0} is already configured".format(channel))
RuntimeError: Channel 37 is already configured

image

relay icons are not shown either

image

Using python console I am able to change the state of the pin without problems.

Any idea how to make it work?

Feature: @command support

It came up today on the Discord server that having @ command support in the plugin may be beneficial for users of OctoDash. I'm going to look into submitting a PR for this feature, but will require a little refactor I think since all the work is currently happening in the SimpleApiPlugin mixin implementation. Will break out the actual working bits of the function to another function that can be called by the API, which would then also allow for integrating the @ command support.

Feature: Auto OFF when reaching a temperature limit

Sorry, my English is bad (i'm french) and i'm not an advised user of github...

so i post my request here ... i know ... it's not an issue ....

Great plugin ... i love it...
But it is possible to implement a cut off function of a relay who depends of the temperature of the noze or the bed ?....
Like the psu control plugin do but who it's limited to one relay and unfortunatly not work at the same time of you plugin .. :( ...?

Also ... a little list of icons in the readme file for the nav bar (what i have to write in the string for each icons or... it will be great to add some icons for the enclosure, the dryer spool box, a raspberry turn off function... or whatever who is useful for ours printers...... ect...) or a way to modify this more simply ?...

Thanks for you answer ... and also for you plugin who is really great !!!

[HELP] how os commands with multiple instances

i want to be able to control the relays connected to a raspberry pi octoprint instance from a pc octoprint instance via api so that i can control the same relay from multiple instances as i have 2 printers sharing lights fans etc etc how can i implement this maybe with the os command to send a api post telling the relay to switch on? it seems you already added a feature that checks if gpio state changes in background and to update ui so it seems like this would be a logical feature implementation. do you think remote gpio would work? which i could then use a os command?

Not controlling my relay.

I bought a slightly more robust relay that can control up to 15amps at 125vAC. It only has three pins for control. 5v, Gnd and IN. I got the 5v connected to Raspberry Pi (4) GPIO Pin 2, Gnd is on pin 9 and IN is on pin 7 for GPIO4. I just can't get the relay to switch. Is OctoRelay able to control that 5v relay?

New release version

Hello @borisbu , would you mind creating a new release ?
The new api command i made the pull request is supposed to be the entrypoint for supporting the plugin in octopod application, but we would need the new release to make sure any user is up to date and have the entrypoint.

Control Buttons Not Being Hidden From Read Only Users

When logging in as a read only user the OctoRelay icons still show in the status bar and I am able to toggle the light. I have not tried toggling the printer power as I am in the middle of a print, but I would assume it would power off the printer also. It appears the plugin does not adhear to the access groups set up in OctoPrint. Please advise / fix. I am on OctoRelay v1.2.0 and OctoPrint v1.7.3 Let me know if you need any other info.

Gcode Support

Hi,
thanks for this great plugin. I am wondering if you could add an option to send also a GCODE command on relay on/off.
e.g. to unload filament via M702.

Thanks
manmac

Labels and relays not working on OctoPrint 1.8.6 / Python 3.9.2

I installed OctoPrint on a Raspberry Pi 2B running DietPi. Everything works quite well, but I cannot get OctoRelay to work at all. After installation, and deactivating all but the first relay entry, the UI still shows relays 'R1 R2 R3 R4' on the dashboard. The labels are being ignored, the icons are ignored, and attached relays are not being actuated when pressing the links. I tested an attached relay using the RPi.GPO module and it works just fine. It's attached to GPIO 4 (pin 7), which is also what the default setting for relay 1 under OctoRelay uses. Any way to troubleshoot this? I already removed and re-installed OctoRelay, but nothing changed. Are there any dependencies that may need to be fulfilled? It'd be nice to get this to work.

Thanks

OctoRelay causes `webcamd` to stop

What happened:

webcam has stopped to stream since move to 1.7.2 and update plugins.
logs:
2021-12-07 16:25:15,468 - octoprint.plugins.octorelay - INFO - Ocotrelay system command: sudo service webcamd stop

Versions:

Octopi 0.17
Octorelay 12.0

Workaround:

manually start webcamd service: sudo service webcamd start

`OctoRelayPlugin` object has no attribute `model`

Hi
after latest update is stopped working (octopi 1.6.0)
octopi (updated)
PI updated

log shows
2021-05-01 15:33:10,480 - octoprint.plugins.pluginmanager - INFO - Loaded plugin repository data from disk, was still valid 2021-05-01 15:33:10,495 - octoprint.plugin - ERROR - Error while calling plugin octorelay Traceback (most recent call last): File "/home/pi/oprint/lib/python3.7/site-packages/octoprint/plugin/__init__.py", line 271, in call_plugin result = getattr(plugin, method)(*args, **kwargs) File "/home/pi/oprint/lib/python3.7/site-packages/octoprint/util/__init__.py", line 1890, in wrapper return f(*args, **kwargs) File "/home/pi/oprint/lib/python3.7/site-packages/octoprint_octorelay/__init__.py", line 220, in on_event self.update_ui() File "/home/pi/oprint/lib/python3.7/site-packages/octoprint_octorelay/__init__.py", line 312, in update_ui self.model[index]['iconText'] = iconOn AttributeError: 'OctoRelayPlugin' object has no attribute 'model' 2021-05-01 15:33:10,687 - octoprint.server.util.flask - INFO - Passively logging in user alex from ::ffff:192.168.1.28

Request - Combining with physical momentary push button

Hi.. thank you for your plugin.
I have a feature request for this:
I'm using enclosure for my printer and I want to use this plugin to control my air filter fan and enclosure light but I also want to have a physical button to control the air filter fan and the enclosure light.
For example I can turn on the light using octoprint and turn it off using the physical button and vice versa.

Thank you

NB: sorry i don't know how to put request label..

Mobile application interface

I found out that the following mobile app supports OctoRelay plugin and provides a convenient interface for operating relay controls on iPhone, iPad and event TVs and watches: OctoPod

image

I hope this information will be useful.

Add physical button control

It would be amazing if this plugin had functionality to turn relays on/off with a physical button connected to a GPIO pin. For example, if I want to change filament quick, I don't really want to have to get my phone/PC out and turn my printer on, it would be great if I could just add a physical on/off button.

Navbar Hover Cursor wrong

When hovering over the 'Light' the cursor is a text one, when hovering over the 'Printer' it's an arrow, would be better if they were both the usual 'Pointing Finger'

We need tests

Dear community,

I love this plugin and I'd like to keep it alive. I'm going to maintain it further, but I need your help.

I am a frontend engineer and my primary focus is Typescript, Javascript, Node.js and React.

My knowledge of Python is very limited. But I also love 3D printing and use this plugin every day.

Luckily, I have a huge experience of software development and maintenance, based on which I realise that:

  • We need tests to continue adding new features and even fixing the bugs.
    • This step is crucial in order to avoid making new bugs to the existing implementation.
    • Ideally, each function should be covered by unit tests.
  • We also need a simple CI workflow that would run them for each commit.
    • The example of it you may find below.
    • It should address both master and develop branches.

Therefore, if you (yes you, %username%) are reading this being familiar with writing unit tests in Python, consider making a PR featuring the tests and a CI workflow for running them. Your contribution will be highly appreciated.

Suggestions, objections and concerns in this regard are welcome in comments to this issue.

Example CI workflow

# .github/workflows/ci.yml
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python package

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.8", "3.9", "3.10"]

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install flake8 pytest
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    - name: Test with pytest
      run: |
        pytest

Unable to install

Hello,

As I was not able to install it through the octoprint plugin manager, I have tried to install it directly by ssh connection but it does not work anyway and I have:

pi@octopi:~/oprint$ ./bin/pip install "https://github.com/borisbu/OctoRelay/archive/master.zip" Collecting https://github.com/borisbu/OctoRelay/archive/master.zip Downloading https://github.com/borisbu/OctoRelay/archive/master.zip \ 830 kB 1.4 MB/s Requirement already satisfied: OctoPrint in ./lib/python3.8/site-packages (from OctoRelay==1.1.0) (0+unknown) Collecting RPi.GPIO Downloading RPi.GPIO-0.7.0.tar.gz (30 kB) Requirement already satisfied: feedparser<7,>=6.0.2 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (6.0.2) Requirement already satisfied: zeroconf<0.25,>=0.24 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.24.5) Requirement already satisfied: pylru<2,>=1.2 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.2.0) Requirement already satisfied: OctoPrint-FileCheck>=2020.08.07 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (2021.2.23) Requirement already satisfied: pyserial<4,>=3.4 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (3.5) Requirement already satisfied: tornado==5.1.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (5.1.1) Requirement already satisfied: unidecode<0.05,>=0.04.14 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.4.21) Requirement already satisfied: frozendict<2,>=1.2 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.2) Requirement already satisfied: requests<3,>=2.23.0 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (2.25.1) Requirement already satisfied: cachelib<1,>=0.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.1.1) Requirement already satisfied: Jinja2<3,>=2.11.2 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (2.11.3) Requirement already satisfied: werkzeug<2,>=1.0.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.0.1) Requirement already satisfied: flask<2,>=1.1.2 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.1.2) Requirement already satisfied: Flask-Login<0.6,>=0.5 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.5.0) Requirement already satisfied: pkginfo<2,>=1.5.0.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.7.0) Requirement already satisfied: rsa==4.0 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (4.0) Requirement already satisfied: itsdangerous<2,>=1.1.0 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.1.0) Requirement already satisfied: blinker<2,>=1.4 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.4) Requirement already satisfied: Click<8,>=7.1.2 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (7.1.2) Requirement already satisfied: sarge==0.1.5post0 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.1.5.post0) Requirement already satisfied: Flask-Assets<3,>=2.0 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (2.0) Requirement already satisfied: markdown<3.2,>=3.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (3.1.1) Requirement already satisfied: Flask-Babel<2,>=1.0 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.0.0) Requirement already satisfied: netaddr<1,>=0.7.19 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.8.0) Requirement already satisfied: websocket-client<1,>=0.57 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.57.0) Requirement already satisfied: netifaces<1,>=0.10.9 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.10.9) Requirement already satisfied: OctoPrint-FirmwareCheck>=2020.09.23 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (2021.2.4) Requirement already satisfied: future<1,>=0.18.2 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.18.2) Requirement already satisfied: filetype<2,>=1.0.7 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.0.7) Requirement already satisfied: semantic-version<3,>=2.8.5 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (2.8.5) Requirement already satisfied: watchdog==0.10.4 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.10.4) Requirement already satisfied: psutil<6,>=5.7 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (5.8.0) Requirement already satisfied: wrapt<2,>=1.12.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.12.1) Requirement already satisfied: sentry-sdk<1,>=0.15.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.20.3) Requirement already satisfied: markupsafe<2.0,>=1.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (1.1.1) Requirement already satisfied: PyYAML<6,>=5.3.1 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (5.4.1) Requirement already satisfied: emoji<1,>=0.5.4 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (0.6.0) Requirement already satisfied: regex!=2018.11.6 in ./lib/python3.8/site-packages (from OctoPrint->OctoRelay==1.1.0) (2020.11.13) Requirement already satisfied: pyasn1>=0.1.3 in ./lib/python3.8/site-packages (from rsa==4.0->OctoPrint->OctoRelay==1.1.0) (0.4.8) Requirement already satisfied: pathtools>=0.1.1 in ./lib/python3.8/site-packages (from watchdog==0.10.4->OctoPrint->OctoRelay==1.1.0) (0.1.2) Requirement already satisfied: sgmllib3k in ./lib/python3.8/site-packages (from feedparser<7,>=6.0.2->OctoPrint->OctoRelay==1.1.0) (1.0.0) Requirement already satisfied: webassets>=2.0 in ./lib/python3.8/site-packages (from Flask-Assets<3,>=2.0->OctoPrint->OctoRelay==1.1.0) (2.0) Requirement already satisfied: pytz in ./lib/python3.8/site-packages (from Flask-Babel<2,>=1.0->OctoPrint->OctoRelay==1.1.0) (2021.1) Requirement already satisfied: Babel>=2.3 in ./lib/python3.8/site-packages (from Flask-Babel<2,>=1.0->OctoPrint->OctoRelay==1.1.0) (2.9.0) Requirement already satisfied: setuptools>=36 in ./lib/python3.8/site-packages (from markdown<3.2,>=3.1->OctoPrint->OctoRelay==1.1.0) (44.0.0) Requirement already satisfied: chardet<5,>=3.0.2 in ./lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint->OctoRelay==1.1.0) (4.0.0) Requirement already satisfied: certifi>=2017.4.17 in ./lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint->OctoRelay==1.1.0) (2020.12.5) Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint->OctoRelay==1.1.0) (1.26.3) Requirement already satisfied: idna<3,>=2.5 in ./lib/python3.8/site-packages (from requests<3,>=2.23.0->OctoPrint->OctoRelay==1.1.0) (2.10) Requirement already satisfied: six in ./lib/python3.8/site-packages (from websocket-client<1,>=0.57->OctoPrint->OctoRelay==1.1.0) (1.15.0) Requirement already satisfied: ifaddr in ./lib/python3.8/site-packages (from zeroconf<0.25,>=0.24->OctoPrint->OctoRelay==1.1.0) (0.1.7) Building wheels for collected packages: OctoRelay, RPi.GPIO Building wheel for OctoRelay (setup.py) ... done Created wheel for OctoRelay: filename=OctoRelay-1.1.0-py2.py3-none-any.whl size=14017 sha256=05e49abd6eea384b178e3e589d4ffb4b223d8f92ba35cdf5a843d0d926ce4a04 Stored in directory: /tmp/pip-ephem-wheel-cache-g4e1cuoh/wheels/59/0b/25/0e420f64875685ee5ca2be084d1fe9db250950f7b732354da8 Building wheel for RPi.GPIO (setup.py) ... error ERROR: Command errored out with exit status 1: command: /home/pi/oprint/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/setup.py'"'"'; __file__='"'"'/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-2cvur8bq cwd: /tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/ Complete output (85 lines): running bdist_wheel running build running build_py creating build creating build/lib.linux-aarch64-3.8 creating build/lib.linux-aarch64-3.8/RPi copying RPi/__init__.py -> build/lib.linux-aarch64-3.8/RPi creating build/lib.linux-aarch64-3.8/RPi/GPIO copying RPi/GPIO/__init__.py -> build/lib.linux-aarch64-3.8/RPi/GPIO running build_ext building 'RPi._GPIO' extension creating build/temp.linux-aarch64-3.8 creating build/temp.linux-aarch64-3.8/source aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/py_gpio.c -o build/temp.linux-aarch64-3.8/source/py_gpio.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/c_gpio.c -o build/temp.linux-aarch64-3.8/source/c_gpio.o source/c_gpio.c: In function ‘setup’: source/c_gpio.c:130:9: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 130 | if ((uint32_t)gpio_mem % PAGE_SIZE) | ^ source/c_gpio.c:131:34: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 131 | gpio_mem += PAGE_SIZE - ((uint32_t)gpio_mem % PAGE_SIZE); | ^ aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/cpuinfo.c -o build/temp.linux-aarch64-3.8/source/cpuinfo.o source/cpuinfo.c: In function ‘get_rpi_info’: source/cpuinfo.c:139:28: warning: format ‘%llx’ expects argument of type ‘long long unsigned int *’, but argument 3 has type ‘uint64_t *’ {aka ‘long unsigned int *’} [-Wformat=] 139 | sscanf(revision, "%llx", &rev); | ~~~^ ~~~~ | | | | | uint64_t * {aka long unsigned int *} | long long unsigned int * | %lx aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/event_gpio.c -o build/temp.linux-aarch64-3.8/source/event_gpio.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/soft_pwm.c -o build/temp.linux-aarch64-3.8/source/soft_pwm.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/py_pwm.c -o build/temp.linux-aarch64-3.8/source/py_pwm.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/common.c -o build/temp.linux-aarch64-3.8/source/common.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/constants.c -o build/temp.linux-aarch64-3.8/source/constants.o aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-aarch64-3.8/source/py_gpio.o build/temp.linux-aarch64-3.8/source/c_gpio.o build/temp.linux-aarch64-3.8/source/cpuinfo.o build/temp.linux-aarch64-3.8/source/event_gpio.o build/temp.linux-aarch64-3.8/source/soft_pwm.o build/temp.linux-aarch64-3.8/source/py_pwm.o build/temp.linux-aarch64-3.8/source/common.o build/temp.linux-aarch64-3.8/source/constants.o -o build/lib.linux-aarch64-3.8/RPi/_GPIO.cpython-38-aarch64-linux-gnu.so /usr/bin/ld: build/temp.linux-aarch64-3.8/source/soft_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/soft_pwm.c:28: multiple definition of `threads'; build/temp.linux-aarch64-3.8/source/event_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/event_gpio.c:60: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/py_pwm.h:23: multiple definition of `PWMType'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/py_pwm.h:23: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:26: multiple definition of `high'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:26: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:27: multiple definition of `low'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:27: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:29: multiple definition of `output'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:29: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:28: multiple definition of `input'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:28: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:30: multiple definition of `pwm'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:30: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:31: multiple definition of `serial'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:31: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:32: multiple definition of `i2c'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:32: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:33: multiple definition of `spi'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:33: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:34: multiple definition of `unknown'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:35: multiple definition of `board'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:36: multiple definition of `bcm'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:37: multiple definition of `pud_off'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:38: multiple definition of `pud_up'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:39: multiple definition of `pud_down'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:40: multiple definition of `rising_edge'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:41: multiple definition of `falling_edge'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:42: multiple definition of `both_edge'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:42: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: first defined here collect2: error: ld returned 1 exit status error: command 'aarch64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- ERROR: Failed building wheel for RPi.GPIO Running setup.py clean for RPi.GPIO Successfully built OctoRelay Failed to build RPi.GPIO Installing collected packages: RPi.GPIO, OctoRelay Running setup.py install for RPi.GPIO ... error ERROR: Command errored out with exit status 1: command: /home/pi/oprint/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/setup.py'"'"'; __file__='"'"'/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-jfk77gra/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/oprint/include/site/python3.8/RPi.GPIO cwd: /tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/ Complete output (85 lines): running install running build running build_py creating build creating build/lib.linux-aarch64-3.8 creating build/lib.linux-aarch64-3.8/RPi copying RPi/__init__.py -> build/lib.linux-aarch64-3.8/RPi creating build/lib.linux-aarch64-3.8/RPi/GPIO copying RPi/GPIO/__init__.py -> build/lib.linux-aarch64-3.8/RPi/GPIO running build_ext building 'RPi._GPIO' extension creating build/temp.linux-aarch64-3.8 creating build/temp.linux-aarch64-3.8/source aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/py_gpio.c -o build/temp.linux-aarch64-3.8/source/py_gpio.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/c_gpio.c -o build/temp.linux-aarch64-3.8/source/c_gpio.o source/c_gpio.c: In function ‘setup’: source/c_gpio.c:130:9: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 130 | if ((uint32_t)gpio_mem % PAGE_SIZE) | ^ source/c_gpio.c:131:34: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 131 | gpio_mem += PAGE_SIZE - ((uint32_t)gpio_mem % PAGE_SIZE); | ^ aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/cpuinfo.c -o build/temp.linux-aarch64-3.8/source/cpuinfo.o source/cpuinfo.c: In function ‘get_rpi_info’: source/cpuinfo.c:139:28: warning: format ‘%llx’ expects argument of type ‘long long unsigned int *’, but argument 3 has type ‘uint64_t *’ {aka ‘long unsigned int *’} [-Wformat=] 139 | sscanf(revision, "%llx", &rev); | ~~~^ ~~~~ | | | | | uint64_t * {aka long unsigned int *} | long long unsigned int * | %lx aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/event_gpio.c -o build/temp.linux-aarch64-3.8/source/event_gpio.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/soft_pwm.c -o build/temp.linux-aarch64-3.8/source/soft_pwm.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/py_pwm.c -o build/temp.linux-aarch64-3.8/source/py_pwm.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/common.c -o build/temp.linux-aarch64-3.8/source/common.o aarch64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/pi/oprint/include -I/usr/include/python3.8 -c source/constants.c -o build/temp.linux-aarch64-3.8/source/constants.o aarch64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-aarch64-3.8/source/py_gpio.o build/temp.linux-aarch64-3.8/source/c_gpio.o build/temp.linux-aarch64-3.8/source/cpuinfo.o build/temp.linux-aarch64-3.8/source/event_gpio.o build/temp.linux-aarch64-3.8/source/soft_pwm.o build/temp.linux-aarch64-3.8/source/py_pwm.o build/temp.linux-aarch64-3.8/source/common.o build/temp.linux-aarch64-3.8/source/constants.o -o build/lib.linux-aarch64-3.8/RPi/_GPIO.cpython-38-aarch64-linux-gnu.so /usr/bin/ld: build/temp.linux-aarch64-3.8/source/soft_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/soft_pwm.c:28: multiple definition of `threads'; build/temp.linux-aarch64-3.8/source/event_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/event_gpio.c:60: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/py_pwm.h:23: multiple definition of `PWMType'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/py_pwm.h:23: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/py_pwm.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/common.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:26: multiple definition of `high'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:26: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:27: multiple definition of `low'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:27: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:29: multiple definition of `output'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:29: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:28: multiple definition of `input'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:28: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:30: multiple definition of `pwm'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:30: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:31: multiple definition of `serial'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:31: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:32: multiple definition of `i2c'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:32: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:33: multiple definition of `spi'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:33: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:34: multiple definition of `unknown'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:35: multiple definition of `board'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:36: multiple definition of `bcm'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:37: multiple definition of `pud_off'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:38: multiple definition of `pud_up'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:39: multiple definition of `pud_down'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:40: multiple definition of `rising_edge'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:41: multiple definition of `falling_edge'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:42: multiple definition of `both_edge'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/constants.h:42: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: multiple definition of `module_setup'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:41: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: multiple definition of `setup_error'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:40: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: multiple definition of `rpiinfo'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:39: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: multiple definition of `gpio_direction'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:38: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: multiple definition of `pin_to_gpio'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:37: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: multiple definition of `pin_to_gpio_rev3'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:36: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: multiple definition of `pin_to_gpio_rev2'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:35: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: multiple definition of `pin_to_gpio_rev1'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:34: first defined here /usr/bin/ld: build/temp.linux-aarch64-3.8/source/constants.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: multiple definition of `gpio_mode'; build/temp.linux-aarch64-3.8/source/py_gpio.o:/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/source/common.h:33: first defined here collect2: error: ld returned 1 exit status error: command 'aarch64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- ERROR: Command errored out with exit status 1: /home/pi/oprint/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/setup.py'"'"'; __file__='"'"'/tmp/pip-install-8hk6fuug/rpi-gpio_5e838837998041f8a8bfef873b238950/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-jfk77gra/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/oprint/include/site/python3.8/RPi.GPIO Check the logs for full command output.

Could somebody help me please ?

Resets when print starts

Setup relay to switch printer off and on. Works fine until print loaded and starts then printer is shutoff.
Setup a relay on a second Pi with another printer but only controlling a light and same situation. On print start light switches off. Print continues and I can switch the light on without any issues.

image

Printer on/off relay is externally powered so only signal triggering. Light relay on second Pi is powered from Pi.
Raspi 3B+'s with all updates done.

not there after installation

I ran installation, it brought up the popup to reboot, but it said installed "unknown" and it does not show up in my list of installed plugins. I tried to install again from zip, it goes through the installation at the end it says, already installed, and closes.

Possible XSS

Hi,
I viewed your plugin, a lot better than mine 😅. Nice job. I only saw a single flaw, for your "icons" you use a text field in the settings, that's nice, because you can set any icon you want, but there is a catch. You can run any html, including scripts, which you absolutely do not want! It's probably not that big of a deal, because most users use this at home, but if you're printer is used by other users, you do not trust completely, it would be wise to fix this issue.

Fix recomendation:
Escape every < and > character with replace method on string.

string = string.replace("<", "&lt;")
string = string.replace(">", "&gt;")

Edit:
The same thing is with the name option in the settings.

Not switching on at start of print job

Hi, I have a small Prusa i3Mk3S+ print farm, all running OctoPrint with relay controlled nights on each printer.
I have tested with the OctoRelay plugin but I cannot get the switch on at start of print job to function, the switch off at completion works fine.
I have also tested with the Enclosure plugin, and switch on at start of print job works with that plugin.

Feature: auto OFF not related to printing

Thank you
Great plugin
Is it possible to add the timed shutdown function without starting prints?
It would be very convenient for me to manage the buttons of the Sunlu Dryer Box S1, it starts up via relay but then you have to give 1 click to make it turn on and bring it to temperature, so if I had the possibility to give 1-3 seconds to the relay I could connect it to the button physical to start it remotely.
Did I have a piece of code to add?

Thank you

Feature: Auto ON after print

I'd like my cooldown fan to turn on for X minutes when a print is completed. There is currently an option to turn relays OFF after a print, but no way to turn them ON.

changing buttons don't work

Hi,

i tried to change the name of the buttons but it does not work, also r3 en r4 are deactivated but still visible in the nav bar

grtz

Request - AutoConnect

Hi

Is it possible to make an automatic connection to the printer from OctoPrint after OctoRelay have powered the printer on. When I power off the printer from OctoRelay the printer is total without power and the connection from OctoPrint are closed.
Thank you :)

Kind Regards
Mads

ON before printing is "stuck" activated, despite NOT being activated in settings!

Screenshot 2022-05-26 at 00 44 30

As you can see in my screenshot, "ON before printing" is NOT ticked/active. Yet, every time I start a print, the relay turns on!
With my relay board, the inverted output is required. For all intents and purposes it works as expected if I manually toggle the relay control. It also correctly turns OFF when a print is finished as expected. I just don't want it turning on when a print starts... but for some reason it does.

does not work

Hi thanks for that. I really want this one. I use the "Enclosure" plugin (https://github.com/vitormhenrique/OctoPrint-Enclosure) which works for me well, with same pins. Yet, it does not work with your plugin. I tried it with Enclosure disabled with no results.
I think that the options of "Enclosure" are good example for you to add (also "PSU Control"plugin do the same - see https://github.com/kantlivelong/OctoPrint-PSUControl):

  1. Option to warn before turning off (important for printer off in the middle of printing)
  2. Option to turn off automatically when printing ends, and a time delay in seconds before that). This is good when you leave printer and want light and fan to stop when not needed anymore.
  3. Convert your commands to GET instead of POST and allow to specify if to turn on or off (you just say "update" which I guess is toggle?) That way I can make a URL shortcut on my phone home page to turn on or off in a click (without going through the Octoprint UI). That is what I can do with "Enclosure" [PSU Control uses POST as well unfortunately. :(. ]

I like that you show different icons on the bar (and not drop down menu as in "Enclosure")
I also like the option to select the icons.
your default 3 relays are exactly what I need too and one plugin instead of a couple is better.
... but it also has to work. ;).

Request feature

Hello, it's works great from scratch ! thank this is what I looked for a while, should it be possible to control it through startup sequence or G-Code command ?
I would like to light on and start enclosure cooling fan when start printing and power them off when print is ended

thanks

Cannot install on OctoCritrico (Armbian)

Just getting Installed: Unknown when trying to install OctoRelay, after reboot it does not show up. It seems to install but cannot find it in plugins. Here is a screen shot and the install process.

2022-08-31

Installing plugin "OctoRelay" from https://github.com/borisbu/OctoRelay/archive/master.zip...
/home/pi/oprint/bin/python3 -m pip --disable-pip-version-check install file:///tmp/tmp8auxnaex/OctoRelay-master.zip --no-cache-dir
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Processing /tmp/tmp8auxnaex/OctoRelay-master.zip
Requirement already satisfied: OctoPrint in /home/pi/oprint/lib/python3.7/site-packages (from OctoRelay==1.2.0) (1.8.2)
Requirement already satisfied: RPi.GPIO in /home/pi/oprint/lib/python3.7/site-packages (from OctoRelay==1.2.0) (0.7.1)
Requirement already satisfied: OctoPrint-FileCheck>=2021.2.23 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2021.2.23)
Requirement already satisfied: flask<2.2,>=2.1 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.1.3)
Requirement already satisfied: markdown<4,>=3.2.2 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (3.4.1)
Requirement already satisfied: sentry-sdk<2,>=1.5.7 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.9.5)
Requirement already satisfied: netaddr<0.9,>=0.8 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.8.0)
Requirement already satisfied: frozendict<3,>=2.0 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.3.4)
Requirement already satisfied: watchdog<2,>=1 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.0.2)
Requirement already satisfied: Flask-Babel<3,>=2.0 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.0.0)
Requirement already satisfied: werkzeug<2.1,>=2.0 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.0.3)
Requirement already satisfied: unidecode in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.4.21)
Requirement already satisfied: emoji<2,>=1.4.2 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.7.0)
Requirement already satisfied: pylru<2,>=1.2 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.2.0)
Requirement already satisfied: tornado<7,>=6.0.4 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (6.2)
Requirement already satisfied: filetype<2,>=1.0.7 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.0.7)
Requirement already satisfied: regex in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2020.11.13)
Requirement already satisfied: OctoPrint-FirmwareCheck>=2021.10.11 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2021.10.11)
Requirement already satisfied: Flask-Assets<3,>=2.0 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.0)
Requirement already satisfied: psutil<6,>=5.8 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (5.8.0)
Requirement already satisfied: Click<9,>=8.0.3 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (8.1.3)
Requirement already satisfied: pyserial<4,>=3.4 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (3.5)
Requirement already satisfied: PyYAML<6,>=5.4.1 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (5.4.1)
Requirement already satisfied: requests<3,>=2.26.0 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.28.1)
Requirement already satisfied: future<1,>=0.18.2 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.18.2)
Requirement already satisfied: zeroconf<0.34,>=0.33 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.33.4)
Requirement already satisfied: sarge==0.1.6 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.1.6)
Requirement already satisfied: pkginfo<2,>=1.7.1 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.8.3)
Requirement already satisfied: Flask-Login<0.6,>=0.5 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.5.0)
Requirement already satisfied: zipstream-ng<2.0.0,>=1.3.4 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.3.4)
Requirement already satisfied: netifaces<1,>=0.11 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.11.0)
Requirement already satisfied: semantic-version<3,>=2.8.5 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.8.5)
Requirement already satisfied: feedparser<7,>=6.0.8 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (6.0.10)
Requirement already satisfied: cachelib<0.3,>=0.2 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (0.2.0)
Requirement already satisfied: blinker<2,>=1.4 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.4)
Requirement already satisfied: websocket-client<2,>=1.2.1 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.4.0)
Requirement already satisfied: colorlog<7,>=6 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (6.7.0)
Requirement already satisfied: OctoPrint-PiSupport>=2022.3.28 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2022.6.13)
Requirement already satisfied: pathvalidate<3,>=2.4.1 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (2.5.2)
Requirement already satisfied: wrapt<1.14,>=1.13.3 in /home/pi/oprint/lib/python3.7/site-packages (from OctoPrint->OctoRelay==1.2.0) (1.13.3)
Requirement already satisfied: importlib-metadata in /home/pi/oprint/lib/python3.7/site-packages (from Click<9,>=8.0.3->OctoPrint->OctoRelay==1.2.0) (4.12.0)
Requirement already satisfied: sgmllib3k in /home/pi/oprint/lib/python3.7/site-packages (from feedparser<7,>=6.0.8->OctoPrint->OctoRelay==1.2.0) (1.0.0)
Requirement already satisfied: Jinja2>=3.0 in /home/pi/oprint/lib/python3.7/site-packages (from flask<2.2,>=2.1->OctoPrint->OctoRelay==1.2.0) (3.1.2)
Requirement already satisfied: itsdangerous>=2.0 in /home/pi/oprint/lib/python3.7/site-packages (from flask<2.2,>=2.1->OctoPrint->OctoRelay==1.2.0) (2.1.2)
Requirement already satisfied: webassets>=2.0 in /home/pi/oprint/lib/python3.7/site-packages (from Flask-Assets<3,>=2.0->OctoPrint->OctoRelay==1.2.0) (2.0)
Requirement already satisfied: Babel>=2.3 in /home/pi/oprint/lib/python3.7/site-packages (from Flask-Babel<3,>=2.0->OctoPrint->OctoRelay==1.2.0) (2.9.0)
Requirement already satisfied: pytz in /home/pi/oprint/lib/python3.7/site-packages (from Flask-Babel<3,>=2.0->OctoPrint->OctoRelay==1.2.0) (2020.5)
Requirement already satisfied: typing-extensions>=3.6.4 in /home/pi/oprint/lib/python3.7/site-packages (from importlib-metadata->Click<9,>=8.0.3->OctoPrint->OctoRelay==1.2.0) (4.3.0)
Requirement already satisfied: zipp>=0.5 in /home/pi/oprint/lib/python3.7/site-packages (from importlib-metadata->Click<9,>=8.0.3->OctoPrint->OctoRelay==1.2.0) (3.8.1)
Requirement already satisfied: MarkupSafe>=2.0 in /home/pi/oprint/lib/python3.7/site-packages (from Jinja2>=3.0->flask<2.2,>=2.1->OctoPrint->OctoRelay==1.2.0) (2.1.1)
Requirement already satisfied: charset-normalizer<3,>=2 in /home/pi/oprint/lib/python3.7/site-packages (from requests<3,>=2.26.0->OctoPrint->OctoRelay==1.2.0) (2.1.1)
Requirement already satisfied: certifi>=2017.4.17 in /home/pi/oprint/lib/python3.7/site-packages (from requests<3,>=2.26.0->OctoPrint->OctoRelay==1.2.0) (2020.12.5)
Requirement already satisfied: idna<4,>=2.5 in /home/pi/oprint/lib/python3.7/site-packages (from requests<3,>=2.26.0->OctoPrint->OctoRelay==1.2.0) (2.10)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/pi/oprint/lib/python3.7/site-packages (from requests<3,>=2.26.0->OctoPrint->OctoRelay==1.2.0) (1.26.12)
Requirement already satisfied: ifaddr>=0.1.7 in /home/pi/oprint/lib/python3.7/site-packages (from zeroconf<0.34,>=0.33->OctoPrint->OctoRelay==1.2.0) (0.1.7)
Building wheels for collected packages: OctoRelay
Building wheel for OctoRelay (setup.py): started
Building wheel for OctoRelay (setup.py): finished with status 'done'
Created wheel for OctoRelay: filename=OctoRelay-1.2.0-py2.py3-none-any.whl size=38623 sha256=cd615b30d808953381cce4edd817e605b06729cc5940037026a45c328917ccd4
Stored in directory: /tmp/pip-ephem-wheel-cache-al8jrnwk/wheels/80/7c/78/128122a64b60ee972a778fd5dd96e98bac872b0d4a227dbf64
Successfully built OctoRelay
Installing collected packages: OctoRelay
Attempting uninstall: OctoRelay
Found existing installation: OctoRelay 1.2.0
Uninstalling OctoRelay-1.2.0:
Successfully uninstalled OctoRelay-1.2.0
Successfully installed OctoRelay-1.2.0
Done!

Thank you for any help

Installation UnicodeEncodeError error

Hi, install failed with this error. What can I do to help debug it?

2021-04-02 10:25:48,024 - octoprint.plugins.pluginmanager - INFO - Installing plugin from https://github.com/borisbu/OctoRelay/archive/master.zip
2021-04-02 10:25:48,977 - octoprint.plugin.core - INFO - Plugin Navbar Temperature Plugin (0.14) is disabled.
2021-04-02 10:26:19,776 - octoprint.plugins.pluginmanager - ERROR - Could not install plugin from https://github.com/borisbu/OctoRelay/archive/master.zip
Traceback (most recent call last):
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/plugins/pluginmanager/__init__.py", line 738, in _command_install_archive
    returncode, stdout, stderr = self._call_pip(pip_args)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/plugins/pluginmanager/__init__.py", line 1414, in _call_pip
    return self._pip_caller.execute(*args, **kwargs)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/pip.py", line 209, in execute
    return self.call(command, **kwargs)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 243, in call
    all_stderr += process_stderr(p.stderr.readlines(timeout=0.5))
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 239, in process_stderr
    return process_lines(lines, self._log_stderr)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 229, in process_lines
    processed = self._preprocess_lines(
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/pip.py", line 511, in _preprocess_lines
    return list(map(self._preprocess, lines))
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/pip.py", line 530, in _preprocess
    return to_unicode(clean_ansi(text))
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 57, in clean_ansi
    return _ANSI_REGEX.sub(b"", line.encode("latin1")).decode("latin1")
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2018' in position 32: ordinal not in range(256)
2021-04-02 10:26:19,777 - octoprint.plugins.pluginmanager - ERROR - Reason: UnicodeEncodeError('latin-1', '  source/py_gpio.c: In function ‘PyInit__GPIO’:\n', 32, 33, 'ordinal not in range(256)')
Traceback (most recent call last):
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/plugins/pluginmanager/__init__.py", line 738, in _command_install_archive
    returncode, stdout, stderr = self._call_pip(pip_args)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/plugins/pluginmanager/__init__.py", line 1414, in _call_pip
    return self._pip_caller.execute(*args, **kwargs)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/pip.py", line 209, in execute
    return self.call(command, **kwargs)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 243, in call
    all_stderr += process_stderr(p.stderr.readlines(timeout=0.5))
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 239, in process_stderr
    return process_lines(lines, self._log_stderr)
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 229, in process_lines
    processed = self._preprocess_lines(
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/pip.py", line 511, in _preprocess_lines
    return list(map(self._preprocess, lines))
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/pip.py", line 530, in _preprocess
    return to_unicode(clean_ansi(text))
  File "/opt/octoprint-venv/lib/python3.9/site-packages/octoprint/util/commandline.py", line 57, in clean_ansi
    return _ANSI_REGEX.sub(b"", line.encode("latin1")).decode("latin1")
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2018' in position 32: ordinal not in range(256)
2021-04-02 10:26:20,245 - octoprint.plugins.pluginmanager - INFO - Loaded plugin repository data from https://plugins.octoprint.org/plugins.json

How to use "OS Command"

Hi, i looked for an explanation for the "OS Command" option.
How can i use them? Is there a list of commands?

Thank you

Is this plugin abandoned?

For octoprint house keeping purposes please confirm if this plug is abandoned.

If so (or in the case of a few weeks of silence) I'll update the octoprint repository and advertise for a new maintainer.

Thanks.

Crash Octoprint after setting pin 37

Hi, unfortunately I have a problem setting raley 1. If I set the pin to port 37, it will send the whole octopi to ground. So far, for some unknown reason, the network connection via wifi and Lan will stop working.
After the reboot during the passage 4 pings and immediately the whole network layer dies.
Unfortunately, I tried it on two clean octopi installations with the same result.

Feature: Shutdown after period of Idle Time

Love the plugin. It is stable, logical and works perfect with my relays.
But... I would like to flip the relays (turn printer and LED off) after a period of idle time.
When the raspi reboots and everything is turned on or when I forget to print or shut it down OctoRelay could switch the relays off.
This would be a very usefull add on to this good plug in!

Thank you in advance.
Grt,
Dumb

octoRelay mit TFT Touch

Hallo,

ich habe Octoprint 1.6.1 am laufen, und ein https://www.waveshare.com/5inch-HDMI-LCD.htm dieses belegt die GPIOs

10, SPI data input of Touch Panel
9, data output of Touch Panel
25, Touch Panel interrupt, low level while the Touch Panel detects touching
11 SPI clock of Touch Panel
7 Touch Panel chip selection, low active

dennoch funktioniert nach der Installation der Plugin kein Touch mehr auch nicht wenn ich andere GPIOs vergebe.

Relay 1 Aktiv, GPIO 16! aber auch nachj einem neustart funktioniert der Touch nicht mehr
Wenn ich Octorelay Deinstalliere klappt wieder alles..

Request - Momentary push button mode

Hi,
I'm in love with this octoprint addon, it's so intuitive and just works great.
I have a printer with a momentary push button in the front for turning on and off the printer (also has the main switch in the back but it does not turn on the printer) so i was hoping if is possible to add a tick to change the functioning relay mode, between the standard switch and the momentary push button (maybe with a customizable seconds selector).

It would be great, so i can remotely turn on the printer beyond than an external fan and light.

Alessandro

Relays with time program

Hi,
I am using the plugin which is working perfectly. Thanks a lot for your work!

Would it be feasable to implement a time program for one channel as an additional feature to allow intermittent switching operations?

Best
Achim

icons and labels don't display properly

Hello,

Thank you for a VERY handy plug-in. My initial setup is for some LEDs mounted below the heatsink fan, to light the print as it's going. The buttons work like a charm, so the only issue I'm having is that it's ignoring the icon and label settings. Below is an octoprint.log snippet from when I switched relay 1 on then off, as well as screen shots of my settings page and how OctoRelay looks in the UI, including one of the mouse-over that should read "headlight" instead of "relay 1". I have two relays enabled in OctoRelay, and both of them work with the UI buttons, though I don't have any lights on the second one yet. I have several other plug-ins that adjust Octo's layout, positioning, etc so I suspect one of those is interfering.

I'm not a Python expert, but I know my way around so please let me know if there's anything I can do to help.

2021-08-05 01:41:16,745 - octoprint.server.api - ERROR - Error while executing SimpleApiPlugin octorelay
Traceback (most recent call last):
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint/server/api/init.py", line 158, in pluginCommand
response = api_plugin.on_api_command(command, data)
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint/util/init.py", line 1941, in wrapper
return f(*args, **kwargs)
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint_octorelay/init.py", line 214, in on_api_command
self.update_ui()
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint_octorelay/init.py", line 308, in update_ui
GPIO.setup(relay_pin, GPIO.OUT)
ValueError: The channel sent is invalid on a Raspberry Pi
2021-08-05 01:41:18,923 - octoprint.server.api - ERROR - Error while executing SimpleApiPlugin octorelay
Traceback (most recent call last):
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint/server/api/init.py", line 158, in pluginCommand
response = api_plugin.on_api_command(command, data)
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint/util/init.py", line 1941, in wrapper
return f(*args, **kwargs)
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint_octorelay/init.py", line 214, in on_api_command
self.update_ui()
File "/home/pi/oprint/lib/python3.7/site-packages/octoprint_octorelay/init.py", line 308, in update_ui
GPIO.setup(relay_pin, GPIO.OUT)

Images

UI

No mouse-over:

octo-relay-ui

With mouse-over:
octorelay_with_mouse-over

Settings

octo-relay-settings

ciao

Hi chi ask I have a raspberry pi 4 b and I can easily connect a 5v relay or just 3.3v on a pini respberry won't load if I add a relay?

Conflict with Smart Filament Sensor plugin

When I install the plugin it stops me from detecting filament via the Smart Filament Sensor plugin. As soon as I uninstall everything works fine again. If I configure the relay board with the Enclosure plugin everything works fine. I'd like to use this plugin because it has all the functions I'm looking for but the filament sensor is essential for me... are there any solutions?

Auto-On does not seem to work with BigTreeTech SKR Mini E3

After having switched the mainboard of my ender 3 to the one mentioned above, the feature "ON before printing" does not seem to cause the GPIO pin to trigger.

I can still switch the same pin on manually by pressing the right button in the UI. That is how I know it is still working.

The main difference between the BTT board and the original Creality board seems to be that the creality board was still powered through USB even when the printer was off. The BTT board appears to be completely off when the power for the printer is cut.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.