Beiträge von pula

    Hallo,


    mit vielen guten Tips von motom001 - DANKE!!!!! - konnte ich ein kleines Projekt verwirklichen.
    Ein keyboard für doorpi, das mittels I2C kommunizieren kann.


    Hintergrund bei mir: Ich habe eine billige Folientastatur (sh Foto, kostet bei ali*** ca 80 cent inkl Porto), die ich gerne zum Öffnen der Tür (zusätzlich zu RFID) verwenden möchte. Außerdem habe ich noch einige Relais herumliegen, die allerdings nur mit Arduinos direkt funktionieren (5V) - und in Software kenne ich mich ein wenig besser aus als in Hardware....


    Anbei das keyboard-file, das ich mit der aktuellen doorpi-Version (frisch laut Anleitung auf Jessie installiert) getestet habe.
    Außerdem anbei der arduino-Sketch (getestet mit einem UNO), der sowohl die Tastatur als auch ein an Pin 10 des Arduino angeschlossenes Relay bedient. Der Sketch ist ein wenig roh und könnte sicherlich noch wesentlich verbessert werden (zum Beispiel ist der Pin 10 hardcoded) - aber das lässt sich sicherlich gut erweitern.


    Ich hoffe, die enthaltene Doku ist halbwegs verständlich.


    WICHTIG: Damit das funktioniert, muß das python smbus-package installiert sein! geht am raspi mit:
    sudo apt-get install python-smbus


    motom001_new: Kannst Du das evtl ins repo mit aufnehmen? Würde mich darüber sehr freuen...


    Cheers,


    Pula

    Ach so - ja, das ist richtig.
    Ich hab das auch oben in dem code vermerkt. Habe aus den raspbian-repos die Pakete

    Code
    1. python-smbus python3-smbus pypy-smbus-cffi


    nachinstalliert. Ich habe heute keine Zeit mehr, aber ich kann morgen ausprobieren, ob wirklich alle drei notwendig sind (habe sicherheitshalber alles installiert, was python und smbus war)...


    Python selber kann anscheinend ohne diese libs nicht mit I2C kommunizieren...


    lg
    Pula
    [hr]
    Hi,


    OK, habs getestet.

    Code
    1. python-smbus


    reicht aus, damit die Kommunikation funktioniert...
    [hr]
    Was mir aber nicht wirklich weiterhilft...


    kannst du mir bitte kurz sagen, wie ich eine eingabe mit einem eintrag in der ini vergleichen kann?
    ich vermute, es handelt sich um diesen code:

    Code
    1. for input_pin in self._InputPins:
    2. if self._last_received_chars.endswith(input_pin):


    aber werd da nicht ganz schlau... :-(
    müsste den gesamten eingegebenen pin mit einem in der ini hinterlegten vergleichen....

    Hi,


    hab mal ein wenig angefangen, aber teilweise seh ich den Wald vor lauter Bäumen nicht, hab ich das Gefühl. Hab zb nicht wirklich Ahnung, was die _ immer bedeuten, aber das lässt sich recherchieren.


    Was ich aber nicht verstehe:
    Im Gegensatz zu dem RFID-Reader habe ich keine definierten Start- und End-Chars. Also müsste ich in der Schleife auf die Strings aus der ini prüfen. Kannst Du mir hier bitte weiterhelfen?
    Hab mal ein wenig angefangen, dein Keyboard ein wenig umzuklempnern (sorry, bin wirklich noch kein Python-Profi)....



    Ach ja... beim I2C kommts immer wieder zu errors, daher die sleep(.001) in den excepts


    Cheers,


    Otto

    Also naja.... kodi ist ein mediaplayer (den ich auch zum Fernsehen einsetze zb) und fhem ist ein Hausautomatisierungs-System, das in perl geschrieben wurde.


    Die Standard-Oberfläche ist vielleicht nicht so jedermanns Sache, aber man kann das mit diversen Mitteln super anpassen.
    Ich steuere zb damit Rolladen, Beleuchtung, Lüfter, Zirkulationspumpe, Multimedia, Fritzbox, Verstärker, Squeezebox-Player (auf einem raspi im Bad), Beschattung, Fenster/Tür Status etc. Ist ziemlich mächtig mittlerweile und das schöne ist, es ist extrem offen für viele, viele verschiedene Systeme (von Homematic über Arduino, mysensors, Beleuchtungs-Protokolle wie Wifilight, Hue und so weiter).
    Ich hab grad umgebaut und hab mir das alles mehr oder weniger selbst gebaut inkl. vollständiger LED-Beleuchtung um unter 2000€ - wenn man so was fertig kauft, ist man in etwa 20.000 € los....
    Und da passt doorpi wunderbar rein - weil man da zb. auch Events absetzen kann. Beispielsweise könnte man bestimmte Beleuchtungen einschalten im Haus, wenn der RFID-Reader einen bestimmten Chip erkennt. Oder eben ein Live-Umschalten des Fernsehers auf das Kamerabild vom doorpi, wenn jemand läutet :-)


    Falls Dich das Thema Hausautomatisierung interessiert, schau mal auf forum.fhem.de - da gibts jede Menge Infos und auch viele hilfsbereite Menschen :-)


    //EDIT \\
    Und ja: ist eine einfache Terminal-Implementation :-)
    [hr]
    Aber noch eine andere Frage:
    Hab grad festgestellt, daß meine kleine python-Routine so den Raspi (Modell A) zu etwa 40% auslastet.
    Wenn ich ein time.sleep(.2) einfüge funktioniert es noch genau so gut (kein Mensch kann so schnell drücken) und lastet das System nicht mehr spürbar aus.
    Da ich die Architektur von doorpi nicht kenne - wenn ich hier ein sleep in das Modul einbauen würde, bremst das doorpi dann aus?
    Muss ich das keyboard dann (außer in der ini) irgendwie speziell einbinden? Oder erkennt doorpi das modul, wenn es im keyboard-dir liegt von selbst?

    Hi!


    Danke für die rasche Antwort!


    Naja - ich bastle hier nur mit vim herum, hab nur Linux und so viel hab ich mit python noch nicht gemacht :-(
    Aber danke für den Hinweis - wenn ich wirklich mehr mache, werd ich mich mal umschaun, was es so an IDEs für Linux und Python gibt. Eclipse is ja hier wie mit Kanonen auf Spatzen schießen...


    Wenn ich das richtig verstanden habe, dann ist das keyboard für den arduino einfach eine "einfache" Terminal-Anbindung?


    Ich werde mir das rfid-keyboard genauer ansehen, aber ich kann noch nicht versprechen, daß ich da durchsteige. Richtig programmieren ist bei mir schon eine Weile her und so firm bin ich mit I2C auch nicht (war froh, daß ich das so weit mal hinbekommen habe). Aber eleganter, als mit files zu arbeiten wäre das allemal....



    So richtig spannend ist doorpi meiner Einschätzung auch, wenn man es mit einer Hausautomatisierung (in meinem Fall fhem) koppelt. Ich denke da zb an Dinge wie automatisches Einblenden des Kamera-Bildes ins laufende Fernsehen oder Türöffnen per Fernbedienung (entweder aus fhem oder aus kodi heraus).... spannend, spannend :-)

    Zitat


    Blöde Frage - benutzt Du das richtige Passwort?


    Hatte ich eigentlich schon - mehrmals geprüft. Aber scheinbar nimmt die Fritz blabla nicht als Kennwort an (obwohl kein Fehler kommt).
    Mit blabla123 (ist sowieso nur zum testen ein einfaches passwort, das später geändert wird) gehts jetzt.
    DANKE für Deine rasche und nette Hilfe! Und nochmal DANKE für Dein tolles Projekt!!
    Hoffe, daß ich jetzt weiter komme, ohne noch jemanden belästigen zu müssen.


    Übrigens: dieses board ist ein unglaublicher Fortschritt! Ich denke, daß hier sehr rasch eine Wissensdatenbank aufgebaut wird, die neuen (so wie mir) hilft, sich zurechtzufinden. Der thread im raspberry-forum war schon ein wenig arg unübersichtlich ;-)

    Hallo,


    ich hab das im raspi-forum-Thread schon einmal geschrieben, aber dort ist das irgendwie untergegangen.


    Ich möchte neben den coolen features, die doorpi schon bietet, auch eine Matrix-Tastatur anbinden - kostet bei ali unter einem Euro.


    Da der Pi selbst nicht genug Pins hat (wenn man so wie ich auch noch einen RFID-Leser und mehrere Taster angeschlossen hat), habe ich das kurzerhand per Arduino und I2C gelöst.
    Mein Ansatz (da ich mit dem Konzept von doorpi noch nicht so vertraut bin und auch python für mich neu ist):


    Auf dem Raspi läuft parallel zum doorpi ein kleines python-Skript, das die Kommunikation mit dem Arduino übernimmt und mit doorpi über eine einfache File-Schnittstelle kommuniziert (an der config für doorpi muss ich noch feilen, aber nach dem, was ich gelesen habe sollte das funktionieren).


    Da ich nur 5V Relais für den Arduino herumliegen habe und keine Lust hatte, extra zum Elektronik-Shop zu fahren, um mir Sachen zu holen, mit denen ich das Relais am Raspi betreiben kann, habe ich auch das Relais, das dann den Türöffner bedienen soll am Arduino hängen. Das Python-Skript betätigt es, wenn ein bestimmtes File existiert.
    Außerdem wird das Relais von dem Skript betätigt, wenn ein richtiger PIN auf der am Arduino hängenden Tastatur eingegeben wird.
    Ich habe das Skript und den Sketch angehängt - vielleicht kann das mal jemand gebrauchen (und bitte nicht schimpfen, weil mein code stümperhaft ist).


    Nebenbei wäre es toll, wenn I2C ebenfalls (als keyboard?) in doorpi integriert werden könnte - dann würde man sich den Zauber mit eigenem Skript sparen...


    lg


    Pula
    [hr]
    Und hier noch der Sketch (habs leider nicht in einem Posting geschafft, 2 Files hochzuladen)

    Dateien

    • keypad.zip

      (764 Byte, 230 Mal heruntergeladen, zuletzt: )
    • tastatur_test.zip

      (1,76 kB, 220 Mal heruntergeladen, zuletzt: )

    Hallo,


    danke für die rasche Antwort. Ich habe in der Zwischenzeit noch einmal ganz von vorne begonnen, nach Deiner Anleitung für jessie. (Hab schon ewig lang an dem image herumgebastelt, da war irgend was nicht mehr sauber)...


    Hier der Auszug aus dem ini (hab das standard-File /usr/local/etc/DoorPi/conf/doorpi.ini genommen):



    Trotzdem bekomme ich die gleiche Meldung:


    Den dump aus der console habe ich diesmal gleich angehängt. Klar ist mir das allerdings überhaupt nicht. Kann das sein, daß das mit dem stun-server (den ich nicht konfiguriert habe oder dem sip-proxy (detto) zusammenhängt? Oder daß das Telefonie-Gerät auf der Fritz so konfiguriert werden muß, daß es auch Anmeldungen aus dem Internet annimmt (würde ich nur _sehr_ ungern machen)?
    Die ini sollte jetzt auf jeden Fall gefunden werden - hab die config nicht extra angegeben beim Aufruf und im log hab ich auch nichts gefunden, daß doorpi sich beschweren würde....


    Danke im voraus!

    Dateien

    • doorpi.log

      (116,96 kB, 201 Mal heruntergeladen, zuletzt: )

    Hallo,


    ich hab nun ein wenig aufgeräumt, um eine evtl. aufgetretene Versions-Vermischung zu vermeiden.
    Allerdings hat sich das Problem nur verschoben, SIP zur Fritz funktioniert (scheinbar) immer noch nicht.


    Im Anhang das Logfile.


    Ausschnitt aus meiner doorpi.cfg:



    Code
    1. [AdminNumbers]
    2. **622 = active
    3. [SIP-Phone]
    4. sipphonetyp = linphone
    5. sipserver_server = 192.168.1.1
    6. sipserver_username = 620
    7. sipserver_password = blabla
    8. sipserver_realm = 192.168.1.1



    Eigentlich müsste sich doch _irgend_ etwas tun, wenn ich intern von meinem Android-Gerät (622) auf 620 anrufe. Aber nix in dem Consolen-Output vom doorpi. Und die Verbindung wird einfach auf dem Android getrennt?!
    Versteh es nicht...


    Übrigens: Wie bekommt man eigentlich doorpi dazu, ein echtes logfile zu schreiben? Habe nur den consolen-output in das file anbei kopiert...


    Ich denke, ich werde in der Zwischenzeit mal versuchen, noch einmal from scratch mit jessie zu starten. Hab irgendwie das Gefühl, daß hier irgend was bei der Installation schiefgegangen ist.


    Danke für die Hilfe!

    Dateien

    • doorpi.log

      (98,6 kB, 187 Mal heruntergeladen, zuletzt: )


    Habe da vor einiger Zeit mal was zusammengeklempnert, um von kodi aus per python fhem anzusteuern, hat gegenüber dem einfachen http-Aufruf den Vorteil, daß es auch mit Authentifizierung funktioniert. [url=https://forum.fhem.de/index.php/topic,36878.msg291515.html#msg291515]https://forum.fhem.de/index.ph….msg291515.html#msg291515[/url]
    Vielleicht kann das ja jemand brauchen (ich denke, ich werde das selber auf jeden Fall brauchen, sobald ich mit doorpi so weit bin ;-) )
    Wobei: wget von raspbian unterstützt glaube ich (im gegensatz zu der Version von openelec) ohnehin Authentifizierung....

    Hallo,


    ich habe vor einiger Zeit mal testweise einen doorpi aufgesetzt, bei dem die Verbindung zur fritzbox eigentlich schon funktioniert hat. Blöderweise habe ich die config nicht gesichert und musste von vorne anfangen.


    Eigentlich bin ich unter Linux schon lange zu Hause - aber doorpi ist neu für mich.


    Mein aktuelles Problem: Ich habe offenbar ein Problem mit der Authentifizierung:


    Auszug aus meiner doorpi.cfg:

    Code
    1. [SIP-Phone]
    2. sipphonetyp = linphone
    3. capture_device = ALSA: USB PnP Sound Device
    4. playback_device = ALSA: USB PnP Sound Device
    5. server = 192.168.1.1
    6. username=620
    7. password=password
    8. realm = fritz.box



    Bin schön langsam echt am verzweifeln und wäre für zweckdienliche Hinweise dankbar!