Ik ben bezig met een project voor android auto in een oudere auto, op basis van Bluewave OpenAuto.
Vraag in het kort:
Script automatisch starten om m.b.v. XDOtool van canbus stuurknoppen naar keystrokes te genereren in OpenAuto
Vraag in het lang:
Introductie
Ik heb geen kennis van linux. Resultaten tot nu toe is allemaal gebaseerd op voorbeelden, bestaande uitleg en trail en error. Ik begin lichtelijk het verschil te zien tussen power user en CHMOD rechten, maar echte kennis heb ik niet.
Het project:
Een ESP32 luistert naar de canbus van mijn auto:
1. auto in slaap modus of 'wakker': indien wakker: RPI aan (via relay voeding aanzetten). RPI gaat uit als auto in slaap modus gaat zodat de accu niet wordt leeg getrokken
2. indrukken stuurknoppen via canbus uitlezen en via seriele poort (tx/rx 0) naar GPIO input van RPI tekst sturen; bijvoorbeeld knop_links of knop_omhoog
De RPI ontvang via GPIO Serial0 de tekst van de ESP32 en mbv XDOtool wordt deze tekst omgezet in een keyboard press. Deze keyboard presses worden herkend door OpenAuto om de menu's te kunnen navigeren.
Het uitlezen van de canbus, het versturen van deze data naar de RPI en het omzetten naar een keystroke werkt, MITS ik het script met de hand start.
Hoe beste automatisch script starten in RPI?
De vraag is, hoe kan ik het beste het script automatisch starten nadat de RPI en OpenAuto gestart zijn?
Ik heb verschillende manieren geprobeerd, maar geen succes:
1. script in RC.local aanroepen: na reboot geen automatische start van het script
2. script in Crontab: na reboot geen automatische start van het script
3. In OpenAuto kunnen middels een configuratie bestand (Openauto_applications.ini) verscheidene apps automatisch gestart worden nadat OpenAuto gestart is.
Echter als ik mijn script toevoeg aan de .ini en het script start in Openauto dan crashed Openauto.
Een van de gebruikers op OpenAuto forum heeft in het verleden aangegeven dat je beter een bash script kunt starten vanuit OpenAuto welke vervolgens je eigen script aanroept.
Op basis van zijn voorbeeld heb ik geprobeerd dit te doen, maar OpenAuto crashed weer. Zie deze 2 linkjes:
https://bluewavestudio.io...ad.php?tid=2648&pid=14820
https://bluewavestudio.io/community/thread-2514.html
Ik snap zijn uitleg in grote lijnen, maar als ik zijn oplossing ombouw naar de mijne, dan krijg ik toch geen werkend resultaat.
Tot slot
Nu heb ik mijn vraag ook uiteengezet op het OpenAuto forum, maar ik heb sterk de indruk dat daar weinig uit gaat komen omdat meerdere mensen eenzelfde vraag hebben uitgezet zonder een constructief antwoord, althans bij mij werken de oplossingen niet.
Wellicht zijn de antwoorden bevredigend voor mensen met Linux kennis, maar ik ontbeer die helaas. Ik heb meerdere avonden zitten googlen en pielen met rechten, oplossingen etc, maar eigenlijk heb ik geen idee waar ik mee bezig ben.
Helaas is dit een discipline waar ik weinig van weet en waar ik helaas ook niet de focus op wil leggen. Ik ben namelijk zo dichtbij om dit project te voltooien, maar het kan toch niet zo moeilijk zijn omee script automatisch te starten?
Het maakt mij niet zoveel uit hoé ik het script automatisch start, maar wel dat hij automatisch start. Wat is jullie advies? Omdat mijn kennis gelimiteerd is zoek ik ook wat advies als het gaat om de juiste rechten, want na vele lezen lijkt het soms ook een probleem te zijn met rechten en volgorde van aanroepen van scripts etc.
Hierbij de code van mijn script:
Hierbij de code van een bash file om indirect mijn eigen script aan te roepen:
hierbij voor de volledigheid de openauto_applications.ini (voor wat het waard is); autostart staat op false omdat Openauto sowieso niet wilt starten. Ik kan met de hand het script in de app zelf starten, maar dan crashed de sotware ook terug naar desktop
Vraag in het kort:
Script automatisch starten om m.b.v. XDOtool van canbus stuurknoppen naar keystrokes te genereren in OpenAuto
Vraag in het lang:
Introductie
Ik heb geen kennis van linux. Resultaten tot nu toe is allemaal gebaseerd op voorbeelden, bestaande uitleg en trail en error. Ik begin lichtelijk het verschil te zien tussen power user en CHMOD rechten, maar echte kennis heb ik niet.
Het project:
Een ESP32 luistert naar de canbus van mijn auto:
1. auto in slaap modus of 'wakker': indien wakker: RPI aan (via relay voeding aanzetten). RPI gaat uit als auto in slaap modus gaat zodat de accu niet wordt leeg getrokken
2. indrukken stuurknoppen via canbus uitlezen en via seriele poort (tx/rx 0) naar GPIO input van RPI tekst sturen; bijvoorbeeld knop_links of knop_omhoog
De RPI ontvang via GPIO Serial0 de tekst van de ESP32 en mbv XDOtool wordt deze tekst omgezet in een keyboard press. Deze keyboard presses worden herkend door OpenAuto om de menu's te kunnen navigeren.
Het uitlezen van de canbus, het versturen van deze data naar de RPI en het omzetten naar een keystroke werkt, MITS ik het script met de hand start.
Hoe beste automatisch script starten in RPI?
De vraag is, hoe kan ik het beste het script automatisch starten nadat de RPI en OpenAuto gestart zijn?
Ik heb verschillende manieren geprobeerd, maar geen succes:
1. script in RC.local aanroepen: na reboot geen automatische start van het script
2. script in Crontab: na reboot geen automatische start van het script
3. In OpenAuto kunnen middels een configuratie bestand (Openauto_applications.ini) verscheidene apps automatisch gestart worden nadat OpenAuto gestart is.
Echter als ik mijn script toevoeg aan de .ini en het script start in Openauto dan crashed Openauto.
Een van de gebruikers op OpenAuto forum heeft in het verleden aangegeven dat je beter een bash script kunt starten vanuit OpenAuto welke vervolgens je eigen script aanroept.
Op basis van zijn voorbeeld heb ik geprobeerd dit te doen, maar OpenAuto crashed weer. Zie deze 2 linkjes:
https://bluewavestudio.io...ad.php?tid=2648&pid=14820
https://bluewavestudio.io/community/thread-2514.html
Ik snap zijn uitleg in grote lijnen, maar als ik zijn oplossing ombouw naar de mijne, dan krijg ik toch geen werkend resultaat.
Tot slot
Nu heb ik mijn vraag ook uiteengezet op het OpenAuto forum, maar ik heb sterk de indruk dat daar weinig uit gaat komen omdat meerdere mensen eenzelfde vraag hebben uitgezet zonder een constructief antwoord, althans bij mij werken de oplossingen niet.
Wellicht zijn de antwoorden bevredigend voor mensen met Linux kennis, maar ik ontbeer die helaas. Ik heb meerdere avonden zitten googlen en pielen met rechten, oplossingen etc, maar eigenlijk heb ik geen idee waar ik mee bezig ben.
Helaas is dit een discipline waar ik weinig van weet en waar ik helaas ook niet de focus op wil leggen. Ik ben namelijk zo dichtbij om dit project te voltooien, maar het kan toch niet zo moeilijk zijn omee script automatisch te starten?
Het maakt mij niet zoveel uit hoé ik het script automatisch start, maar wel dat hij automatisch start. Wat is jullie advies? Omdat mijn kennis gelimiteerd is zoek ik ook wat advies als het gaat om de juiste rechten, want na vele lezen lijkt het soms ook een probleem te zijn met rechten en volgorde van aanroepen van scripts etc.
Hierbij de code van mijn script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| import serial import os #import pyudev import subprocess #import _thread import platform import subprocess import time if __name__ == '__main__': ser = serial.Serial(port='/dev/serial0',baudrate=115200,timeout=1) ser.reset_input_buffer() while True: #ser.write(b'getCommands\n'); line = ser.readline() print(line) if line==b'EVENT_SHUTDOWN\n': os.system('shutdown -h now') if line==b'EVENT_UP\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ Up') if line==b'EVENT_DOWN\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ Down') if line==b'EVENT_LEFT\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ 1') if line==b'EVENT_RIGHT\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ 2') if line==b'EVENT_ENTER\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ Return') if line==b'EVENT_BACK\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ h') if line==b'EVENT_NEXT\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ n') if line==b'EVENT_PREVIOUS\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ v') if line==b'EVENT_ANSWER\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ p') if line==b'EVENT_HANGUP\n': os.system('export DISPLAY=:0.0 && xdotool search --class autoapp key --window %@ o') ser.close() |
Hierbij de code van een bash file om indirect mijn eigen script aan te roepen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| if (ps aux | grep event_monitor.py | grep -v grep > /dev/null) then DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority xdotool search --desktop 0 --name "DashControl" windowactivate else DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority python3 /home/pi/Scripts/event_monitor.py & while [[ ! DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority wmctrl -l|grep DashControl ]] ; do true done DISPLAY=:0.0 XAUTHORITY=/home/pi/.Xauthority xdotool search --desktop 0 --name "DashControl" windowactivate fi |
hierbij voor de volledigheid de openauto_applications.ini (voor wat het waard is); autostart staat op false omdat Openauto sowieso niet wilt starten. Ik kan met de hand het script in de app zelf starten, maar dan crashed de sotware ook terug naar desktop
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| [Applications] Count=5 [Application_0] Name=YouTube Path=/usr/bin/chromium-browser IconPath=/home/pi/.openauto/icons/icon_youtube.svg Arguments=--user-data-dir=/home/pi/.google-chrome/session/youtube --app=https://youtube.com --start-maximized Autostart=false [Application_1] Name=Kodi Path=/usr/local/kodi/bin/kodi IconPath=/home/pi/.openauto/icons/icon_kodi.png Arguments= Autostart=false [Application_2] Name=Chromium Path=/usr/bin/chromium-browser IconPath=/home/pi/.openauto/icons/icon_chrome.svg Arguments=--start-maximized Autostart=false [Application_3] Name=Welle.io Path=/usr/local/bin/welle-io-1 IconPath=/home/pi/.openauto/icons/icon_welleio.png Arguments=--disable-splash Autostart=false [Application_4] Name=DashControl Path= /home/pi/Scripts/DashControl.sh IconPath=/home/pi/.openauto/icons/icon_welleio.png Arguments= Autostart=false |
T60P Widescreen