Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Status of master #2

Open
rdorsch opened this issue Sep 11, 2019 · 48 comments
Open

Status of master #2

rdorsch opened this issue Sep 11, 2019 · 48 comments

Comments

@rdorsch
Copy link

rdorsch commented Sep 11, 2019

Hi Wuestengecko,

entschuldige, dass ich Dich per Issue kontaktiere, aber ich habe keine andere Kontaktmöglichkeit gesehen. Dein Master-Branch scheint der aktivste DoorPi Branch zu sein. Kannst Du kurz was zum Zustand sagen. Sollte der halbwegs stabil und einsetzbar sein oder ist der z.B. in der Mitte im Umbau zu python3 und läuft nichtmal?

Weitere Empfehlungen zur Codebasis von Doorpi sind herzlich willkommen. Hier oder per PM [email protected]

Danke und Gruß
Rainer

@Wuestengecko
Copy link
Owner

Hi,

bitte entschuldige, dass ich erst jetzt antworte - da habe ich wohl die Mail von Github verpasst.

Da ich zusätzlich zur Umstellung auf Python 3 einige größere Änderungen an der Codebasis vorgenommen habe, und noch einige andere geplant bzw. teilweise lokal umgesetzt habe, ist mein aktueller master momentan nicht stabil. Die meisten Sachen funktionieren zwar, aber bereit für den Produktiveinsatz ist es insgesamt betrachtet noch nicht.

Durch die Umstellung von linphone auf pjsua2 ist außerdem momentan keine Videounterstützung vorhanden. Da ich sie selbst nicht benötige, ist da auch aktuell nichts weiter geplant.

@CReimer
Copy link

CReimer commented Mar 15, 2021

Gilt das eigentlich immernoch, oder ist 3.0.0b5 lauffähig?

@leoguiders
Copy link

Würde mich auch interessieren. Vor allem bräuchte es eine Doku wie man das System neu aufsetzt.

@Wuestengecko
Copy link
Owner

Ich habe anlässlich dessen nochmal versucht, das System frisch von Grund auf auf einem Raspi zu installieren, und dabei sind mir noch ein paar kleinere Bugs und Nervigkeiten aufgefallen. Derer werd ich mich die nächsten Tage noch annehmen, und dann zusammen mit Anleitung hier her pushen.

@fraeggle
Copy link

Ähh ich versuch gerade mal die Installation und erhalte aber bei
python setup.py build
File "setup.py", line 33
content = content.replace(f"!!{key}!!", str(val))
^
SyntaxError: invalid syntax
hab ich was vergessen? ach und wie ist das mit pjsua2 installation?
Ne Installationsdoku wäre echt cool. Videounterstützung beim Call brauch ich auch nicht. mir reichen Screenshots beim klingeln............

@leoguiders
Copy link

Ähh ich versuch gerade mal die Installation und erhalte aber bei
python setup.py build
File "setup.py", line 33
content = content.replace(f"!!{key}!!", str(val))
^
SyntaxError: invalid syntax

Das kommt wenn du versuchst das Projekt mit python 2.x zu bauen, mit python 3.x sollte es funktionieren.

@fraeggle
Copy link

fraeggle commented Apr 2, 2021

ok ist dann der Aufruf anders?

@Wuestengecko
Copy link
Owner

python3 anstelle von python sollte reichen.

@fraeggle
Copy link

fraeggle commented Apr 6, 2021

sch.............
sudo apt-get install python3-pip

git clone https://github.com/Wuestengecko/DoorPi.git
cd DoorPi
python3 setup.py build
sudo python3 setup.py install --prefix=/usr/local

Allerdings kommt dann bei letzerem:

byte-compiling /usr/local/lib/python3.7/dist-packages/doorpi/web/templates/ini
t
.py to init.cpython-37.pyc
File "/usr/local/lib/python3.7/dist-packages/doorpi/web/templates/init.py" , line 37
path: Union[str, pathlib.PurePosixPath], load: Callable[[str, str], _T], /
^
SyntaxError: invalid syntax

                                                                       resources.cpython-37.pyc

byte-compiling /usr/local/lib/python3.7/dist-packages/doorpi/web/api.py to api.c python-37.pyc
File "/usr/local/lib/python3.7/dist-packages/doorpi/web/api.py", line 151
if (transport := request.transport) is not None
^
SyntaxError: invalid syntax

byte-compiling /usr/local/lib/python3.7/dist-packages/doorpi/actions/out.py to o ut.cpython-37.pyc
File "/usr/local/lib/python3.7/dist-packages/doorpi/actions/out.py", line 43
/,
^
SyntaxError: invalid syntax

byte-compiling /usr/local/lib/python3.7/dist-packages/doorpi/status/systemd.py t o systemd.cpython-37.pyc
File "/usr/local/lib/python3.7/dist-packages/doorpi/status/systemd.py", line 8 7
or (usec := os.environ["WATCHDOG_USEC"]) == "0"
^
SyntaxError: invalid syntax

alles andere davor und danach läuft durch und zum schluss kommt:

running install_data
copying data/doorpi.sh -> /etc/init.d
creating /usr/local/lib/systemd
creating /usr/local/lib/systemd/system
copying data/doorpi.service -> /usr/local/lib/systemd/system
copying data/doorpi.socket -> /usr/local/lib/systemd/system
running install_egg_info
running egg_info
creating DoorPi.egg-info
writing DoorPi.egg-info/PKG-INFO
writing dependency_links to DoorPi.egg-info/dependency_links.txt
writing entry points to DoorPi.egg-info/entry_points.txt
writing requirements to DoorPi.egg-info/requires.txt
writing top-level names to DoorPi.egg-info/top_level.txt
writing manifest file 'DoorPi.egg-info/SOURCES.txt'
writing manifest file 'DoorPi.egg-info/SOURCES.txt'
Copying DoorPi.egg-info to /usr/local/lib/python3.7/dist-packages/DoorPi-0.0.0-p y3.7.egg-info
running install_scripts
Installing doorpi script to /usr/local/bin

Allerdings ist die Web-Seite nicht erreichbar ( hoffe Port 8080 ist geblieben)

Abfrage mit
doorpi status

Traceback (most recent call last):
File "/usr/local/bin/doorpi", line 6, in
from pkg_resources import load_entry_point
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 3191, in
@_call_aside
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 3175, in _call_aside
f(*args, **kwargs)
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 3204, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 583, in _build_master
ws.require(requires)
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'toml>=0.10.1' distribution was not foun d and is required by DoorPi

Wo legt der denn normalerweise jetzt die Config ab?
weil wie beim Alten gibt es kein /usr/local/etc/DoorPi/

Im Moment läuft mein "alter" Dorrpi ja noch brav mit regelmäßigen image Backups... ;-)

Gruß Peter

@emphasize
Copy link

Super das es noch einen aktualisierten Fork gibt.

Werde in der nächsten Zeit mal schauen, ob ich das ganze über Hivemind mit Mycroft verbunden bekomme

@emphasize
Copy link

emphasize commented Jan 16, 2022

So, hab jetzt mal Zeit gefunden um mir die Neuerungen anzuschauen.

@Wuestengecko Welches Keyboard ist getestet und voll funktionsfähig (mit voll meine ich auch außerhalb von _default)? So das ich andere nach dessen definitionen modellieren kann. Es bringt nichts, wenn ich jetzt an einer Stelle umstelle während dann an anderer Stelle das ganze zusammenbricht.
Und vielleicht ergänzend: Ist dieses git auf dem "neuesten" Stand, oder hast du noch lokal Änderungen die nicht hier Eingang gefunden haben?

Beispiel gpio:
self._inputs (doorpi.keyboard.abc.AbstractKeyboard) ist - gemäß der verwendung in from_gpio.py - eine Liste von Pins, im keyboard handler wird for pin, actions in kb.config.view("input").items(): verwendet (was pin=< keyboardname > und actions=< Pin/Pins > bedeuten würde; was wiederum auf das etwas irritierende ConfigView design zurückzuführen ist).

[keyboard.onboardpins]
type = "gpio"
mode = "BCM"
pull_up_down = "UP"
input.onboardpins = 27

Ich komm da nicht klar ohne genaue Ansage.

PS: kommt mir grad der einfall, das es mit input.27 = <action> zumindest was die verwendung im handler betrifft (theoretisch) konform wäre.
PSPS: Okay, hab es mit den o.g. Änderungen dazu bekommen einen os_execute abzufeuern (nur anpassungen in from_gpio.py self._input (list[str] -> list[int]))

@rookie10
Copy link

rookie10 commented Jan 28, 2022

Wie hast du denn die doorpi.ini angelegt ? Beim erststart wird ja keine angelegt und wenn ich die aus doorpi 2.5 verwende kommt ein fehler

Traceback (most recent call last):
File "/usr/local/lib/python3.9/dist-packages/toml/decoder.py", line 511, in loads
ret = decoder.load_line(line, currentlevel, multikey,
File "/usr/local/lib/python3.9/dist-packages/toml/decoder.py", line 778, in load_line
value, vtype = self.load_value(pair[1], strictly_valid)
File "/usr/local/lib/python3.9/dist-packages/toml/decoder.py", line 910, in load_value
raise ValueError("This float doesn't have a leading " 
ValueError: This float doesn't have a leading digit

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/bin/doorpi", line 33, in <module>
sys.exit(load_entry_point('DoorPi==3.0.0b5', 'console_scripts', 'doorpi')())
File "/usr/local/lib/python3.9/dist-packages/doorpi/__main__.py", line 119, in main
instance = doorpi.DoorPi(args)
File "/usr/local/lib/python3.9/dist-packages/doorpi/doorpi.py", line 98, in __init__
self.config.load(self.configfile)
File "/usr/local/lib/python3.9/dist-packages/doorpi/config/configuration.py", line 51, in load
subconf = list(toml.load(path).items())
File "/usr/local/lib/python3.9/dist-packages/toml/decoder.py", line 134, in load
return loads(ffile.read(), _dict, decoder)
File "/usr/local/lib/python3.9/dist-packages/toml/decoder.py", line 514, in loads
raise TomlDecodeError(str(err), original, pos)
toml.decoder.TomlDecodeError: This float doesn't have a leading digit (line 2 column 1 char 9)

@emphasize
Copy link

emphasize commented Jan 28, 2022

Durch die Umstellung auf toml (u.a.) sind die definitionen/strukturen andere. Da muss man sich leider durchfummeln.
die default Definitionen (wovon man die Struktur ableiten kann) findest du im doorpi/config/defs/*.toml

Hab bis jetzt schon einige Anpassungen gemacht/machen müssen. Wenn alles so funktioniert, das man es auch nutzen kann werde ich das ganze in den master (fork) mergen. Für Wagemutige: Hier gehts weiter (ist noch nicht auf master(!); weiteres sollte über issues dort weitergeführt werden, da der fork hier stale ist und tendentiell auch bleiben wird)

So wie ich die Sache nachvollziehen kann war vorhergesehen die Konfiguration webseitig zu definieren (und sie dort auch näher zu erklären). Allerdings ist mitten in der Anpassung gestoppt worden. Ebenso werden die website-ressourcen im setup prozess nicht kopiert, man also auch kein webinterface hat.

die test ini sieht bei mir so aus:

base_path = "/usr/local/etc/doorpi"

[mycroft]
hivename = "DoorPi"
access_key = "x"
crypto_key = "x"
host = "x"

[snapshots]
directory = "/home/ubuntu"
width = 640

[keyboard.onboardpins]
type = "gpio"
mode = "BCM"
pull_up_down = "UP"
input.27 = ["os_execute:aplay /home/ubuntu/bleep_01.wav",
            "to_mycroft:bus,speak,an der tür ist jemand",
            "snap_stream:rtsp://x/unicast"]

[events]
OnStartup = "connect_mycroft:"

Ist ein test setup mit GPIO keyboard und im wesentlichen darauf ausgelegt das neugeschriebene mycroft event zu testen.
Um die GPIO action allerdings nutzen zu können brauchte es Anpassungen im code (s.o)

SIP und Konsorten habe ich noch nicht angepasst, deswegen kommt es auch noch nicht vor. Allerdings kann ich jetzt schon mit mycroft verbinden :)

Nutzt du zuälligerweise ein piface? Wäre interessiert, ob es auch dort Anpassungen geben muss.

@rookie10
Copy link

rookie10 commented Jan 28, 2022

irgendwie ist bei mir noch der Wurm drin. Selbst wenn ich deine verwende und in /etc/doorpi/doorpi.ini kopiere bekomme ich einen Fehler

Traceback (most recent call last):
File "/usr/local/bin/doorpi", line 33, in <module>
sys.exit(load_entry_point('DoorPi==3.0.0b5', 'console_scripts', 'doorpi')())
File "/usr/local/lib/python3.9/dist-packages/doorpi/__main__.py", line 119, in main
instance = doorpi.DoorPi(args)
File "/usr/local/lib/python3.9/dist-packages/doorpi/doorpi.py", line 98, in __init__
self.config.load(self.configfile)
File "/usr/local/lib/python3.9/dist-packages/doorpi/config/configuration.py", line 60, in load
self[key] = val
File "/usr/local/lib/python3.9/dist-packages/doorpi/config/configuration.py", line 145, in __setitem__
keydef, _ = self.keydef(keypath)
File "/usr/local/lib/python3.9/dist-packages/doorpi/config/configuration.py", line 122, in keydef
source, wildsegments = self._keydef(path)
File "/usr/local/lib/python3.9/dist-packages/doorpi/config/configuration.py", line 196, in _keydef
raise KeyError(f"Undefined key: {path}") from None
KeyError: "Undefined key: ['events', 'OnStartup']"

ich hab zwar ein piface verwende es aber nicht.
Ich verwende sip mit der fritz und ein udp keyboard

doorpi/config/defs/*.toml gibt es bei mir nicht und toml musste ich von hand nachladen

@emphasize
Copy link

emphasize commented Jan 28, 2022

die kannst du nicht verwenden, da man vorher Einträge in den tomls' machen müsste.
Schmeiß alles was mycroft betrifft raus

base_path = "/usr/local/etc/doorpi"

[snapshots]
directory = "/home/<name>"
width = 640

[keyboard.onboardpins]
type = "gpio"
mode = "BCM"
pull_up_down = "UP"
input.27 = ["os_execute:aplay /home/ubuntu/bleep_01.wav"]

#du musst natürlich eine bleep_01.wav an der stellen haben, wenn die aktion ausgeführt werden soll ;)

@emphasize
Copy link

emphasize commented Jan 28, 2022

Ebenso werden die website-ressourcen im setup prozess nicht kopiert, man also auch kein webinterface hat.

doorpi/config/defs/*.toml gibt es bei mir nicht und toml musste ich von hand nachladen

Stimmt, das bezog sich nicht nur auf website ressourcen, sondern jegliche nicht .py

Du brauchst die einträge währen des setup prozesses

spar dir die grauen haare und installiere testweise von meinem fork

git clone https://github.com/emphasize/DoorPi
cd DoorPi
git checkout bugfix/setuptools
sudo python3 setup.py install --prefix=/usr/local

ACHTUNG: Sichere deine .ini!!! (insbesondere wenn sie sich unter doorpi/conf/ befindet. Ist entgegen der allgemeinen Änderungsrichtung (noch) auf sudo installs angelegt. Wird allerdings geändert, wenn alles so weit getestet ist

@rookie10
Copy link

Super, jetzt läuft es erstmal

@rookie10
Copy link

Ich hab mich jetzt mal am pjsua2 probiert, leider bisher ohne erfolg.
Letztendlich scheitert es (nur) noch an den python modulen.
Bevor ich mich jetzt tot compileiere, wollte ich nachhacken ob du da schon erfolgreich bist ?

@emphasize
Copy link

emphasize commented Jan 30, 2022

Für alle die sich wegen der Konfiguration wundern, nachfolgend die keypaths der Konfiguration. (nur aufgeführt sind die diejenigen, die ein Wert besitzen bzw. einen _default - da __getitem__ momentan so funktioniert)

{  # http response
	"success": true,
	"message": {
		"config": {
			"web.ip": "0.0.0.0",
			"web.port": "50317",
			"web.root": "../DoorPiWeb",
			"web.indexpage": "/dashboard/pages/index.html",
			"web.areas.public": "('.*',)",
			"mail.port": "587",
			"mail.need_login": "False",
			"mail.ssl": "False",
			"mail.tls": "False",
			"mail.signature": "!EPILOG!",
			"sipphone.type": "dummy",
			"sipphone.ringtime": "30",
			"sipphone.calltime": "120",
			"sipphone.max_calls": "8",
			"sipphone.codecs": "('opus', 'PCMA', 'PCMU')",
			"sipphone.server.username": "doorpi",
			"sipphone.server.realm": "",
			"sipphone.server.localport": "0",
			"sipphone.server.identity": "DoorPi",
			"sipphone.stunserver": "",
			"sipphone.capture.volume": "100",
			"sipphone.capture.loudness": "1.0",
			"sipphone.playback.volume": "100",
			"sipphone.playback.loudness": "1.0",
			"sipphone.dialtone.loop": "True",
			"sipphone.dialtone.loudness": "1.0",
			"sipphone.recording.enabled": "False",
			"sipphone.recording.path": "recordings",
			"sipphone.recording.keep": "10",
			"sipphone.recording.dial": "True",
			"sipphone.echo_cancellation.enabled": "False",
			"sipphone.echo_cancellation.tail": "250",
			"sipphone.video.enabled": "False",
			"sipphone.video.device": "",
			"sipphone.video.resolution": "VideoResolution.vga",
			"sipphone.video.codec": "vp8",
			"snapshots.directory": "/home/sgee",
			"snapshots.keep": "10",
			"snapshots.width": "0",
			"keyboard.*.bouncetime": "100",
			"keyboard.*.polarity": "Polarity.HIGH",  #Enum
			"keyboard.*.pressed_on_key_down": "True",
			"keyboard.*.reset_input": "True",
			"keyboard.*.mode": "GPIOMode.BOARD",  #Enum
			"keyboard.*.pull_up_down": "GPIOPull.OFF",  #Enum
			"keyboard.*.baudrate": "9600",
			"keyboard.*.input_stop_flag": "\n",
			"keyboard.*.input_buffer_size": "255",
			"keyboard.*.output_stop_flag": "\n",
			"base_path": "/usr/local/etc/doorpi",
			"mycroft.hivename": "DoorPi",
			"mycroft.access_key": "x",
			"mycroft.crypto_key": "x",
			"mycroft.host": "192.168.188.29:5678",
			"eventlog": "eventlog.db"
		}
	}
} 

Bis auf das, was mit mycroft beginnt (und "web.indexpage") ist alles nutzbar. (zumindest theoretisch)
die values sind - zu demonstrationszwecken - alle zu string konvertiert (ie der datentyp der konfig ist nicht ableitbar)

Das ganze läuft in der .ini immer wie folgt ab
bsp. siphone server einträge ("sipphone.server.username": "doorpi",)

[sipphone.server]
username = "irgendeinname"
realm = "irgendeinrealm"
localport = 5000

ebenso würde auch der Eintrag korrekt sein

[sipphone]
server.username = "irgendeinname"

Wildcardeinträge (*) beziehen sich immer auf einen zu definierenden namen (oder nummer im Falle von GPIO Aktionen)
keypath: "keyboard.*.pull_up_down"
keyboard heisst "onboardpins" (ist willkürlich)

[keyboard.onboardpins]
pull_up_down = "UP"
baudrate = 9600
input.27 = ["os_execute:aplay /home/ubuntu/bleep_01.wav"]  #GPIO 27 -> os_execute... / keypath keyboard.*.input.*
....

Hoffe, das die Logik klar geworden ist

@emphasize
Copy link

Ich hab mich jetzt mal am pjsua2 probiert, leider bisher ohne erfolg. Letztendlich scheitert es (nur) noch an den python modulen. Bevor ich mich jetzt tot compileiere, wollte ich nachhacken ob du da schon erfolgreich bist ?

Ich kümmere mich jetzt erst einmal darum das die konfiguration auf der webpage einsehbar ist, erklärt wird und geändert werden kann. Dann schmeiße ich mich an den sip Teil.

@rookie10
Copy link

rookie10 commented Feb 1, 2022

Nutzt du zuälligerweise ein piface? Wäre interessiert, ob es auch dort Anpassungen geben muss.

Hab jetzt mal mein piface angeschlossen, piface musste ebenfalls angepasst werden.
Hast du mal versucht einen Ausgang anzusprechen bei mir kommt da ein fehler

[keyboard.Onboard]
bouncetime = 100
type = "piface"
polarity = "HIGH"
pressed_on_key_down = true
input.0 = ["sleep:1"]
output.0 = "offen"
input.1 = ["call:11"]

[events]
"OnKeyPressed_0" = ["out:offen,1"]
2022-02-01 17:22:20,302 [DEBUG]         [doorpi.event.handler] [GEVXIT] Executing 1 action(s) for OnKeyPressed_0
2022-02-01 17:22:20,302 [DEBUG]         [doorpi.event.handler] [GEVXIT] Executing Set offen to 1
2022-02-01 17:22:20,303 [ERROR]         [doorpi.keyboard.handler] Cannot output to pin offen
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/keyboard/handler.py", line 91, in output
    kb, kbname, pinalias = self._decode_pinpath(pinpath)
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/keyboard/handler.py", line 136, in _decode_pinpath
    raise ValueError(f"Cannot decode pin name {pinpath!r}") from None
ValueError: Cannot decode pin name 'offen'
2022-02-01 17:22:20,309 [ERROR]         [doorpi.event.handler] [GEVXIT] Error executing action "Set offen to 1" for event OnKeyPressed_0
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/event/handler.py", line 204, in fire_event_sync
    action(event_id, extra)
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/actions/out.py", line 20, in __call__
    self._setpin(self._value)
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/actions/out.py", line 24, in _setpin
    raise RuntimeError(f"Cannot set pin {self._pin} to {value}")
RuntimeError: Cannot set pin offen to 1

@emphasize
Copy link

emphasize commented Feb 1, 2022

kbname, pin = pinpath.split(".")

da pinpath anscheinend offen ist (wobei ein konstrukt wie Onboard.offen erwartet wird kann er nicht auf zwei variablen entpacken. KA warum das so ist. auf jeden fall fehlt der keyboardname.

von der definition her hätte ich auch output.0 = "offen" konfiguriert
versuch mal "OnKeyPressed_0" = ["out:Onboard.offen,1"]

@emphasize
Copy link

Auf jeden Fall klingt das letzte logisch, da die "out" Aktion ja nicht weiß auf welches Keyboard es sich beziehen soll

@rookie10
Copy link

rookie10 commented Feb 1, 2022

Ok, das hätte ich auch mal selber testen können
"OnKeyPressed_0" = ["out:Onboard.offen,1"] war die Lösung

@emphasize
Copy link

Was ebenfalls interessant wäre, ob es möglich ist zwei (grundsätzlich) verschiedene keyboards zu definieren.
Da, wenn man beispielsweise GPIOs verwendet self._inputs zu einer liste von int machen muss (andernfalls ein pointer zu dem verwendeten Typ bräuchte), wirds kritisch wenn jetzt ein keyboard strings verlangt.

@rookie10
Copy link

rookie10 commented Feb 1, 2022

Im Augenblick muss ich im keyboard piface ebenfalls die Inputs in integer ändern,
Ich hab mir ein keyboard für UDP-Komminikation geschrieben, hier verwende ich strings.
Ich kann das mal in betrieb nehmen und testen. Mal schauen wie ich das nachträglich integriere

@rookie10
Copy link

rookie10 commented Feb 1, 2022

Da du wie ich erkenne den Source code komplett durch bist, noch eine Problem. Wenn ich folgendes Event konfiguriere

[events]
"OnKeyPressed_Onboard.0" = ["out:Onboard.offen,1,0,3"]

bekomme ich folgenden Fehler

Traceback (most recent call last):
  File "/usr/local/bin/doorpi", line 33, in <module>
    sys.exit(load_entry_point('DoorPi==3.0.0b6.dev31+ga01035e', 'console_scripts', 'doorpi')())
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/__main__.py", line 119, in main
    instance = doorpi.DoorPi(args)
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/doorpi.py", line 105, in __init__
    self.config.load(self.configfile)
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/config/configuration.py", line 60, in load
    self[key] = val
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/config/configuration.py", line 145, in __setitem__
    keydef, _ = self.keydef(keypath)
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/config/configuration.py", line 122, in keydef
    source, wildsegments = self._keydef(path)
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/config/configuration.py", line 186, in _keydef
    raise KeyError(f"Key path too long: {path}")
KeyError: "Key path too long: ['events', 'OnKeyPressed_Onboard', '0']"
Exception ignored in: <function DoorPi.__del__ at 0x757728e0>
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/DoorPi-3.0.0b6.dev31+ga01035e-py3.9.egg/doorpi/doorpi.py", line 181, in __del__
AttributeError: 'DoorPi' object has no attribute '_DoorPi__prepared'

Grunsätzlich ist der event aber vorhanden

2022-02-01 18:25:09,019 [DEBUG] [doorpi.event.handler] [NWOC3M] Executing 1 action(s) for OnKeyPressed_Onboard.0

@emphasize
Copy link

emphasize commented Feb 1, 2022

'"OnKeyPressed_Onboard.0"'
muss OnKeyPressed.0 heißen. der kennt den keypath events.OnKeyPressed_Onboard.0 nicht

{
"events": {
          "OnKeyPressed": {   <---  hier sucht er nach dem key "OnKeyPressed_Onboard"
                    "0": ""
                    }
          }
}

@rookie10
Copy link

rookie10 commented Feb 1, 2022

Aber unterscheiden tut er schon

2022-02-01 18:28:43,775 [DEBUG]         [doorpi.event.handler] No actions registered for OnKeyDown_Onboard.0, skipping
2022-02-01 18:28:43,777 [DEBUG]         [doorpi.event.handler] No actions registered for OnKeyPressed, skipping
2022-02-01 18:28:43,792 [DEBUG]         [doorpi.event.handler] [8TI1J0] Executing 1 action(s) for OnKeyPressed_0
2022-02-01 18:28:43,793 [DEBUG]         [doorpi.event.handler] [8TI1J0] Executing
2022-02-01 18:28:43,806 [DEBUG]         [doorpi.event.handler] [PM2NCV] Executing 1 action(s) for OnKeyPressed_Onboard.0
2022-02-01 18:28:43,807 [DEBUG]         [doorpi.event.handler] [PM2NCV] Executing Wait for 1.0 seconds
2022-02-01 18:28:43,990 [DEBUG]         [doorpi.event.handler] No actions registered for OnKeyUp, skipping
2022-02-01 18:28:43,992 [DEBUG]         [doorpi.event.handler] No actions registered for OnKeyUp_0, skipping
2022-02-01 18:28:43,993 [DEBUG]         [doorpi.event.handler] No actions registered for OnKeyUp_Onboard.0, skipping
2022-02-01 18:28:44,820 [DEBUG]         [doorpi.event.handler] [PM2NCV] Finished firing event OnKeyPressed_Onboard.0
2022-02-01 18:28:46,810 [DEBUG]         [doorpi.event.handler] [8TI1J0] Finished firing event OnKeyPressed_0
'''

Und das würde auch heißen, daß wenn du zwei Keyboard mit einem Pin 0 hättest du immer auf beide reagieren würdest

@emphasize
Copy link

emphasize commented Feb 1, 2022

Heißt aber nicht, das die Configuration Class bzw. das Objekt auch einen eintrag dafür bereithält

@rookie10
Copy link

rookie10 commented Feb 1, 2022

keyboard.toml

"OnKeyDown_[pin]" = "Like OnKeyDown, but specifically for pin [pin]."
"OnKeyUp_[pin]" = "Like OnKeyUp, but specifically for pin [pin]."
"OnKeyPressed_[pin]" = "Like OnKeyPressed, but specifically for pin [pin]."
"OnKeyDown_[keyboard].[pin]" = "Like OnKeyDown, but for pin [pin] of keyboard [keyboard]."
"OnKeyUp_[keyboard].[pin]" = "Like OnKeyUp, but for pin [pin] of keyboard [keyboard]."
"OnKeyPressed_[keyboard].[pin]" = "Like OnKeyPressed, but for pin [pin] of keyboard [keyboard]."

@emphasize
Copy link

emphasize commented Feb 1, 2022

edit: da hab ich quatsch erzählt. der splittet ja in dem Fall "_". Allerdings wird wahrscheinlich das nachfolgende .* nicht mit einbezogen. Muss man sich mal anschauen

"OnKeyPressed_[pin]" = "Like OnKeyPressed, but specifically for pin [pin]."
"OnKeyDown_[keyboard].[pin]"

Nach dem eingesetzten schema (für events) müsste das theoretisch OnKeyDown_[keyboard]_[pin] heißen

@Pampersjoe
Copy link

Hallo die Herrschaften :D

ich weiß, ist hier völlig fehl am Platz, aber ich bin noch recht neu bei Github und kenne mich noch nicht wirklich hier aus, wüsste nicht wie ich euch zwei direkt ansprechen kann.

Ich wurde von jemand hier her verwiesen... der mitbekommen hat, dass ihr hier weiter am DoorPi arbeitet. Da anscheinend EINIGE da draußen Interesse haben, aber das DoorPi-Forum anscheinend tot ist, so hatte ich meinen Discord angeboten, in dem sich schon die ersten treffen, wenns auch noch nicht viele sind. Die Idee ist, dass man sich austauscht und genau das möchte ich tun, denn derjenige hat wohl auch schon ein wenig mit dem alten DoorPi gemacht, Scripte etc. erstellt und würde sich u.U. auch einbringen wollen etc.

Da sicher noch EINIGE mehr interessiert sind an einem neuen DoorPi (u.A. auch ich) vor allem auch auf Python3, hättet ihr Lust vorbei zu schauen und euch auf dem Discord auszutauschen? Ich kann auch gerne ein geschlossenen Bereich machen, wenn die "Entwickler" sich untereinander austauschen möchten.

Grüße Mike

@rookie10
Copy link

rookie10 commented Feb 8, 2022

Hallo Pampersjoe

grundsätzlich finde emphasize ich es immer schade das solche wirklich gute Projekte nicht weiter entwickelt werden. Das was emphasize gerade veranstaltet scheint mir aktuell der aussichtsreichste Kanditat von Doorpi3 zu sein. Da ich aber nicht weiß wie viel Leidenschaft emphasize bereit ist zu investieren, kann ich auch nicht sagen ob es dazu kommt. Die bisherigen Versuche Doorpi auf python 3 umzustellen, waren individuell Lösungen oder wurden nicht beendet.
Für mich wäre aber das bisherige Doorpi Forum der richtige Weg, da sonst alle bisherige Doorpi user abgehängt werden. Aber die Entscheidung gebührt dem Entwickler ob/wann und welche Plattform er dazu verwendet.
Nicht falsch verstehen ich freue mich wenn das Interesse an doorpi wieder größer wäre, ab ein Plattform wechsel wäre auch nicht hilfreich.

@emphasize
Copy link

emphasize commented Feb 8, 2022

ziemlich leidenschaftlich:P

kurzer teaser:
Screenshot 2022-02-08 225910
Konfigurationsdaten sind sektioniert, veränderte werte werden farblich herausgestellt, eigene wildcard definitionen (wie zB keyboards, actions,... sind zusätzlich farblich unterlegt

darunter (nicht abgebildet) befindet sich ein als iframe eingehängte zusätliche Beschreibung der Sektion. Die Beschreibungen von den tomls' sind also herausgelöst worden, das man nicht in den files rumkramen muss.
(alle configänderungen sind noch lokal und noch nicht auf dem fork, geb bescheid wenn man darauf zugreifen kann)

@emphasize
Copy link

emphasize commented Feb 8, 2022

ein Plattform wechsel wäre auch nicht hilfreich.

das doorpi forum ist tot da mods schon lange weg sind und daran wird sich nichts ändern solange sich der adminstatus nicht ändert. Es wäre also nötig sich mit Thomas Meissner (motom001) auseinander zu setzen.

@Pampersjoe
Copy link

Halle die Herrschaften :D

danke für euer Feedback. Ja genau das ist der Knackpunkt... das Forum ist TOT, sonst hätten sich nicht ein Paar auf meine Installationsanleitungen gemeldet (da ging es aber nur um Support bei der Installation), daher wollen wir das "anderweitig" zum Leben erwecken, da auch ein Versuch im Forum gescheitert ist dort das gleiche Thema zu platzieren, es hat wirklich absolut KEINER geantwortet.

Auch den Versuch zu starten den Entwickler zu kontaktieren war erfolglos, denn die im Impressum hinterlegte Mailadresse gibt es schon gar nicht mehr. Wie emphasize schon sagte, die letzten Beiträge der "Verantwortlichen" sind teils Jahre her. Das Einzige, wenn überhaupt, was sich dort noch bewegt, sind User die das irgendwo aufgeschnappt haben, nicht weiter kommen und dort um Hilfe bitten und "mit Glück" noch jemand da ist der mal eine Antwort gibt. Das ist ja auch heutzutage das "negative" am Forum, die Leute greifen ab, was sie brauchen und kommen nicht mehr, vor allem nicht, wenn ein Forum tot ist, das ist nicht böse gemeint oder falsch zu verstehen, ich komme doch selbst aus der Zeit (bin 40) in der ich in einigen Foren unterwegs war.

Es wird auch gemunkelt (das ist aber nur "Hörensagen"), dass die sich verabschiedet und das kostenpflichtige Doorbird daraus gemacht haben, weiss ich aber nicht mit Gewissheit, hat man mir gestern nur ins Ohr geflüstert, daher wäre erst recht verständlich, wenn man das Projekt nicht neu machen möchte.

Ich kann verstehen, dass du eine gewisse "Treue" gegenüber dem Forum hast @Wuestengecko, es war auch nie 100% gedacht das Forum abzulösen, denn dort kann man ja nach wie vor Posten und alte Informationen kann man sicher weiter verwenden! Aber andererseits wird heute nunmal mehr Discord verwendet und es ging ja eher darum sich mit anderen "willigen" auszutauschen, damit man das nicht alleine machen muss, genau wie schon beschrieben... es scheint ja einige Forks zu geben, vllt. hat jemand das im stillen Kämmerchen sogar schon fertig, aber nicht veröffentlicht. Wie heißt es so schön "gemeinsam ist man stark" :D Ok... ich kann den Discord stellen und die Menschen zusammen bringen, auf meinem Blog Anleitungen zur Verfügung stellen, Pizza bestellen und sonstigen Support leisten, da ich selbst leider nicht programmieren kann aber ja, ihr wisst was ich meine :D Ihr habt ja "hier" und nicht im Forum das gleiche gemacht... euch zusammen geschlossen.

Keiner muss, jeder darf :D es sind aktuell auch noch nicht viele dort, aber ich werde es zumindest weiter anbieten, denn damals (in dem Beitrag "ist DoorPi tot" oder wie der hieß) gab es ja auch schon welche die nur darauf gewartet haben, was sie tun sollen. Gestern hatten wir z.B. darüber philosophiert ob es nicht sogar sinn macht ein "Beispielrezept" zu basteln, was verstehen wir darunter:

  • Hardware (zwar nicht vorgeben) aber zu empfehlen
  • fertiges Image zur Verfügung stellen auf dem DoorPi schon installiert ist (oder halt maximal ein Script --> ja ist jetzt schon möglich ich weiß, aber auch nur wegen Python2)
  • in dem Image (oder meinetwegen an einem anderen Ort) gibt es fertige Scripte, damit das Ganze vllt. am Ende "modulbasiert" aufgebaut ist

Gerade wenn Anfragen bisher zur Installation bei mir kamen, scheiterte es gerade bei Anfängern schon an Kleinigkeiten... es muss ja NUR eine andere Soundkarte gekauft werden, die zwar auch USB etc kann, aber am Ende vom Namen her anders heißt, woran die Anfänger meist schon scheitern, wenn man eine Hardwareempfehlung ausspricht, macht es das vllt. einfacher.

Und auch nicht in gefühlt 50 verschiedenen Beiträgen irgendwo mal ein Codeschnipsel eingeworfen sondern ein Wiki oder im Image einen Ordner hinterlegen mit Scripts. Sprich der eine benötigt "Nachrichten" per Telegram --> Script telegram.py oder so ausführen, ein anderer will es vllt. per Mail --> Mail.py ausführen (sind jetzt nur ausgedachte Beispiele) aber aktuell muss man sich halt mühsam alles zusammen suchen. (das musste ich 2016 schon, als ich damit angefangen hatte um es auf meine Bedürfnisse anzupassen). Die Ideen sind schier unendlich ... das kann von "lasst eine Sammelbestellung von Hardware" bis hin zu manchen Usern die z.B. im Metallbau arbeiten und Frontplatten vergünstig anbieten könnten, wäre für alle Seiten eine Win Win Situation, Unterputzkästen mit 3D Druck... oder oder oder... (ne ich habe weder noch, kann weder noch, will daran wirklich kein Geld verdienen, ich bin nur an der Community interessiert und an DoorPi 3 :D)

Na ja, ich danke trotzdem für eure Antwort und was ich so stehe bisher echt coole Arbeit! Kann mans schon testen? Was fehlt denn noch zum "geplanten Finale"?

Grüße Mike

@rookie10
Copy link

rookie10 commented Feb 9, 2022

Es wäre also nötig sich mit Thomas Meissner (motom001) auseinander zu setzen

Aktuell ist deviloper admin vom Forum, Letztes jahr hat sich mottom001 mal gemeldet das er weiter machen möchte. Da er aber mehrere User hat bin ich mir nicht sicher ob er nicht doch regelmäßig reinschaut. Vielleicht solltest du mal deviloper ansprechen, da er vielleicht einen direkten Kontakt zu mottom001 hat

Es wird auch gemunkelt (das ist aber nur "Hörensagen"), dass die sich verabschiedet und das kostenpflichtige Doorbird daraus gemacht haben

Auf die idee bin auch schon gekommen. Könnt ich auch verstehen, läuft ja wirklich stabil

Ich bin auch nur User und habe niemand die treue geschworen. Wenn sich mein Gefühl bestätigt das es jetzt wirklich weitergeht, werde ich mich auch daran orientieren welchen Weg der Entwickler einschlägt. Und sofern möglich auch Unterstützen. Selber bin ich mit meinem eigenen Projekt beschäftigt, und ehrlich gesagt ist noch eine andere Liga an Programierer als ich.
Bisher habe ich mir halt die Module die ich benötige selber gebaut. Und das Telegram und MQTT dirngend implemtiert gehören sehe ich auch so.
Also macht es nicht von mir abhängig

@leoguiders
Copy link

leoguiders commented Feb 9, 2022

Wäre es nicht am einfachsten, die Möglichkeiten von Github als Forum und Issue-Tracker zu nutzen?
Ich bin ehrlich gesagt als Doorpi-Neuling mit dem Doorpi-Forum überhaupt nicht zurecht gekommen und nur auf tote Links gestoßen...

@Pampersjoe
Copy link

Wäre es nicht am einfachsten, die Möglichkeiten von Github als Forum und Issue-Tracker zu nutzen? Ich bin ehrlich gesagt als Doorpi-Neuling mit dem Doorpi-Forum überhaupt nicht zurecht gekommen und nur auf tote Links gestoßen...

:D genau darüber reden wir :D ein (zumindest wie es aktuell ausschaut) totes Projekt zum Leben erwecken... und falls das IRGENDWIE falsch rüber kam... ich bin dafür, dass der Ursprung forgesetzt wird... ich will mich weder über jemand hinweg setzen noch etwas Parallel bauen, wenn der Kern weiter entwickelt wird... Daher habe ich bisher weder hier noch im Forum den Discord hinterlegt, da ich ja eben mit dem Entwickler selbst sprechen will (siehe mein Beitrag im Forum, wo der Entwickler ist!!!)

Das ist sein Baby... sein Erfolg und soll auch ihm weiter gehören, wenn er es denn möchte... wenn halt keine Meldung kommt... wäre es schade aber gibt genug (so Leute wie ihr) die das eben weiter machen wollen (so böse wie es klingt) mit oder ohne ihn... aber genau darum geht es halt... ich versuche ja ihn zu erreichen, wenn Ihr Kontaktdaten habt... her damit =)

Grüße

@emphasize
Copy link

emphasize commented Feb 9, 2022

Das mit den Babies wird in dem Fall etwas freier gehandhabt. Es ist der "Vater", auf dessen fork sich die letzten funktionalen Entwicklungen beziehen - in sofern derjenige sich den Schuh anzieht (und eigentlich diskutieren wir hier auf dem falschen ;) this way. Vorväter gut und schön, aber was soll ich mit einem nicht nutzbaren Produkt machen?

Im übrigen ist die Lizenz auf dem das ganze basiert NC (non-commercial). Sollten diejenigen den code als grundlage für Doorbird genommen haben, hätten sie (potentiell) ein echtes Problem.

@emphasize
Copy link

emphasize commented Feb 9, 2022

Was fehlt denn noch zum "geplanten Finale"

@Pampersjoe Auch wenn du es höchstwahrscheinlich nicht so gemeint hast, die Änderungen beziehen sich jetzt erst einmal auf Teilbereiche.

Ich will jetzt erst einmal den Config - also den elementarsten - Bereich so gestalten, das er ohne commandline Kenntnisse (bzw. Kenntnisse von den inneren Funktionsweise der Konfiguration ) funktioniert. Grundlagen waren schon gelegt, nur fehlten die letzten Strecken dafür.

Wenn das so weit fertig ist gehts ans testen der implementierung der keyboards bzw des sip-parts. (bei dem inbesondere Nutzer mit verschiedenster - unterstützter - hardware benötigt werden). Es wurden im Zuge der Umschreibung der linphone part gestrichen (und nur pjsua vorgesehen). Nach meinem Verständnis schließt das also video (per sip) aus. Weiterhin sind die Änderungen ursprünglich darauf ausgelegt per Nutzer zu installieren... Bis es "final" wäre wird noch einiges an Zeit ins Land gehen.

@Pampersjoe
Copy link

Good news =) ich habe eine Kontaktmöglichkeit gefunden und stehe nun mit Thomas in Kontakt... weiteres kläre ich mit Ihm und werden euch auf dem Laufenden halten, wenn ihr möchtet.

@Pampersjoe
Copy link

@motom001
Copy link

Wow, ihr habt ja schon viel gemacht. Respekt!
Ist es schon eine stabile Python3 Version oder kann ich helfen?

@emphasize
Copy link

emphasize commented Feb 11, 2022

Ist in manchen Teilbereichen noch entfernt von "stabil".
Mein Fahrplan ist die webconfig stabil zu bekommen bzw. auszudefinieren, dann den branch -der alle bisherigen fixes enthält- auf master zu bringen und von dort aus weiter zu testen.

Bitte auf dem fork weiterarbeiten.
Es ist natürlich schon möglich parallel zu testen (und issues zu formulieren)
Die SIP implementierung ist von mir ungetestet, da ich erst einmal die essentials (ie config) eingängig gestalten will.

git clone https://github.com/emphasize/DoorPi
cd DoorPi
git checkout bugfix/setuptools
sudo python3 setup.py install --prefix=/usr/local
sudo /usr/local/bin/doorpi --configfile /usr/local/etc/doorpi/conf/doorpi.ini

Die eigentliche Richtung ist per user zu installieren, der Einfachkeit wegen ist es noch auf system install ausgelegt

Die Konfigurationsdatei ist neu aufzubauen (perspektivisch über den webauftritt) und kann nicht übernommen werden.

@rookie10
Copy link

Wow, ihr habt ja schon viel gemacht. Respekt! Ist es schon eine stabile Python3 Version oder kann ich helfen?

Fände ich super, wenn du wieder dabei wärst

Hier gehts weiter

@Pampersjoe
Copy link

Die Jungs, wollen sich morgen Abend im Discord austauschen, sofern alle Zeit haben ab 20 oder 21... steht noch nicht fest... wollt ihr dazu stoßen?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants