Hauptmenü

DoorPi-Projekt

Begonnen von Syntaxterror, 25 Februar 2016, 18:39:59

Vorheriges Thema - Nächstes Thema

Sailor

Hallo pah

ich habe ein kleines Problemchen mit dem DoorPi Modul

1. Ich habe 70_DoorPi.pm com ./contrib/DoorPi ins ./FHEM Verzeichnis kopiert
2. JSON und Test:JSON mittels CPAN nachinstlliert
3. DoorPi - device mittels define Befehl angelegt.

Resultat: fhem schmiert ab

Der Status in der Console sagt aus:

sudo service fhem status
● fhem.service - LSB: FHEM server
   Loaded: loaded (/etc/init.d/fhem)
   Active: active (exited) since Sun 2017-05-07 09:03:13 CEST; 4min 59s ago
  Process: 30336 ExecStop=/etc/init.d/fhem stop (code=exited, status=0/SUCCESS)
  Process: 30372 ExecStart=/etc/init.d/fhem start (code=exited, status=0/SUCCESS)

May 07 09:03:12 DeekeHomeServer fhem[30372]: Starting fhem...
May 07 09:03:13 DeekeHomeServer systemd[1]: Started LSB: FHEM server.
May 07 09:04:20 DeekeHomeServer sudo[30428]: pam_unix(sudo:auth): conversation failed
May 07 09:04:20 DeekeHomeServer sudo[30428]: pam_unix(sudo:auth): auth could not identify password for [fhem]


Das Log-File sagt aus:


keys on reference is experimental at ./FHEM/70_DoorPi.pm line 657.
keys on reference is experimental at ./FHEM/70_DoorPi.pm line 676.
malformed JSON string, neither array, object, number, string or atom, at character offset 17 (before "<head>\n            ...") at ./FHEM/70_DoorPi.pm line 651.


a) Habe ich da irgendwo etwas falsch eingegeben?
b) Müssen die anderen Dateien aus dem Verzeichnis ./contrib/DoorPi ebenfalls ins ./FHEM ?
c) Wo benötigt das DoorPi-Modul die Angabe zu User und Passwort des DoorPi-Servers?

Gruss
    Sailor
******************************
Man wird immer besser...

Prof. Dr. Peter Henning

1. Welche Version des DoorPi-Moduls ( get .. version) ?

2. fhemweb_doorpicalllist.js muss nach ../fhem/www/pgm2

3. Ich arbeite in eine hochgradig gesicherten Umgebung und verwende deshalb keine Passwortsicherung. Beispiels weise kann ich mit dem Aufruf
http://<ip-adresse>/control/trigger_event?event_name=OnKeyPressed_webservice.dooropen&event_source=doorpi.keyboard.from_filesystem
die Tür öffnen. Der normale Weg zur Mitgabe einer grundlegen Authenfizierung in dem URL-Aufruf ist
http://<username>:passwort@<ip-adresse>/control/trigger_event?event_name=OnKeyPressed_webservice.dooropen&event_source=doorpi.keyboard.from_filesystem

Also bitte als bei der Definition
define ... DoorPi <username>:passwort@<ip-adresse>
verwenden.

Das ist natürlich eher unsicher, bei Gelegenheit werde ich versuchen, eine sichere Speicherung der Credentials einzubauen.

LG

pah

Sailor

#437
Hallo pah

Zitat von: Prof. Dr. Peter Henning am 07 Mai 2017, 10:46:33
1. Welche Version des DoorPi-Moduls ( get .. version) ?

1. Da ich keine Befehle absenden kann, bevor mir fhem abschmiert, anbei der Header der 70_DoorPi.pm

########################################################################################
#
# DoorPi.pm
#
# FHEM module to communicate with a Raspberry Pi door station running DoorPi
# Prof. Dr. Peter A. Henning, 2016
#
#  $Id: 70_DoorPi.pm 2016-05 - pahenning $
#
#  TODO: Link /xx weglassen beim letzten Call
#
########################################################################################
#
#  This programm is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  The GNU General Public License can be found at
#  http://www.gnu.org/copyleft/gpl.html.
#  A copy is found in the textfile GPL.txt and important notices to the license
#  from the author is found in LICENSE.txt distributed with these scripts.
#
#  This script is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
########################################################################################


Zitat von: Prof. Dr. Peter Henning am 07 Mai 2017, 10:46:33
2. fhemweb_doorpicalllist.js muss nach ../fhem/www/pgm2

Erledigt

Zitat von: Prof. Dr. Peter Henning am 07 Mai 2017, 10:46:33
Also bitte als bei der Definition
define ... DoorPi <username>:passwort@<ip-adresse>
verwenden.

OK, wird gemacht.

Zitat von: Prof. Dr. Peter Henning am 07 Mai 2017, 10:46:33
Das ist natürlich eher unsicher, bei Gelegenheit werde ich versuchen, eine sichere Speicherung der Credentials einzubauen.

Du kannst dir ja mal mein Modul 73_km200.pm anschauen.
Dort kann man die Credentials wahlweise als Klartext oder Base64 codiert als Parameter übergeben.

Nachtrag: Das scheint es gewesen zu sein. Zumindest gibt es keine fhem Abstürze mehr.

Gruss
    Sailor
******************************
Man wird immer besser...

Franz Tenbrock

Hallo Sailor
kannst du bitte alle Schritte protokollieren ?
macht es auch anderen leichter.

Vorteil auch für einen selber
auch nach Monten sieht man dann was man gemacht hat um ein Ziel zu erreichen.
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Prof. Dr. Peter Henning

1. Da ich keine Befehle absenden kann, bevor mir fhem abschmiert, anbei der Header der 70_DoorPi.pm
Tiefer, bitte. Dort steht im Code etwas von "version"

Passwort sicher speichern: Das ist übrigens keine Frage des "Wie" - das weiß ich schon sehr genau. Sondern des "Wann" - mein Zeitbudget ist etwas angespannt.

@Franz Tenbrock: Nette Idee, das mit dem Protokollieren - aber bitte nicht hier im Thread. Dafür gibt es Wikis - und eventuell kann man aus einem schlechten Protokoll hinterher einen brauchbaren Artikel machen.

LG

pah

Franz Tenbrock

Guten Morgen,
in ihrem Wiki würde ich kaum wagen irgend etwas zu ändern, denke die anderen auch nicht (meine ich echt nicht böse)
ev. hilft mir ja auch mal jemand, hab  ja einen eigenen Thread aufgemacht, dann störe ich hier nicht weiter

https://forum.fhem.de/index.php/topic,71388.msg631201.html#msg631201

Anleitung stelle ich als rtf auf Anfrage zur Verfügung, Änderungen erwünscht
für Linux Profis sicher so nicht erforderlich
für Linux Anfänger sicher aber schon ( es ist noch kein Meister vom Himmel gefallen   ;) )

reduziert ev. die Anzahl der Hilferufe
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Franz Tenbrock

hab nun den gesamten Thread hier gelesen

hab dann wie in einem Post angegeben die
Datei so verschoben
sudo mv 70_DoorPi.pm /opt/fhem/FHEM

das ganze mit Filezilla kontrolliert
Datei ist im Ordner vorhanden vom 19.02.2017

wenn ich nun
define door DoorPi 192.168.178.87

kommt das hier
Cannot load module DoorPi

Perl-Module JSON und Test::JSON
sudo apt-get install libjson-perl
wurde nach FHME wiki Raspi installiert

Sorry
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Sailor

Zitat von: Franz Tenbrock am 08 Mai 2017, 22:48:39
hab dann wie in einem Post angegeben die
Datei so verschoben
sudo mv 70_DoorPi.pm /opt/fhem/FHEM

Ggf. musst du noch die Rechte neu setzen.

Gruß
    Sailor
******************************
Man wird immer besser...

Franz Tenbrock

ich tu mich noch schwer
mit
sudo chmod 755 70_DoorPi.pm

hab ich die Rechte geändert und mit dem VNC Viewer über Jessy_Pixel kontrolliert
nun stehen die Rechte so:
Besitzer ist fhem, Gruppe dialout, INhalt anzeigen und ausführen : jeder
Inhalt ändern : nur Besitzer

geht trotzdem nicht,

neuer Rechner, alle Updates, fhem neu, update shutdown restart
Datei vom 19.02.17
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Prof. Dr. Peter Henning

ZitatCannot load module DoorPi

Das ist mit Sicherheit nicht die gesamte Fehlermeldung.

LG

pah

Franz Tenbrock

#445
ok
konnte gerade erst nachsehen.
also wenn ich es oben in Fhehm eingebe kommt direkt die Anwort geht nicht wie oben geschrieben
wenn ich dann aber ins Log sehe, was ich blöderweise nicht gemacht habe ( Sorry )  dann kommt deutlich mehr

"
2017.05.09 07:41:16 0: Can't locate Test/JSON.pm in @INC (you may need to install the Test::JSON module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl ./FHEM) at ./FHEM/70_DoorPi.pm line 37.
BEGIN failed--compilation aborted at ./FHEM/70_DoorPi.pm line 37.
"
Asche auf mein Haupt

muss jetzt erst mal schauen wie ich das nun wieder installiere. Geahnt hatte ich es schon weil ja im Wiki stand
Test::JSON
Kleinigkeiten aber halt wesentlich

:(
das hier hab ich nun gefunden

http://cpansearch.perl.org/src/OVID/Test-JSON-0.11/lib/Test/JSON.pm
in etwas so
sudo  wget http://cpansearch.perl.org/src/OVID/Test-JSON-0.11/lib/Test/JSON.pm
holt die Datei ab legt sie wo ab?
und dann irgendwie installieren ? grrrr

ist das das richtige wie wird das installiert, sorry aber Linux ist da schon etwas anders als bei Windwos, irgendwie vollkommen andere Welt was man nicht mal so eben nebenbei im Selbststudium lernt
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Prof. Dr. Peter Henning

Das geht viel einfacher:

apt-get install libtest-json-perl

Bei allen Perl-Modul-Installationen bitte immer bei Google eingebn: Name der Distribution und Modulname - dann gibt es schon die richtigen Hinweise.

Zitatsorry aber Linux ist da schon etwas anders als bei Windwos, irgendwie vollkommen andere Welt was man nicht mal so eben nebenbei im Selbststudium lernt

Da muss ich aber energisch widersprechen: Weder bin ich Informatiker, noch bringen wir unseren Studierenden Linux "bei". Lernen ist, konstruktivistisch gesehen, immer "Selbststudium".

LG

pah

Franz Tenbrock

#447
Selbststudium - ja haben Sie Recht, bei Windows auch alles selbst beigebracht, da ging das Selbststudium nun über 35 Jahre :-)  über FHEM an Linux gekommen, ich bastel und experimentiere halt gerne, bei windows kann ich in der Umgebung halt auch mal jemanden fragen bei Linux nobody.
Ich lese die ganze Woche schon im Internet rauf und runter.

Projekt halt wohl nicht so ganz trivial.
Der Code von der DoorPi.ini ist halt auch umfangreich und im Netz ist es nun nicht ganz so einfach da durchzusteigen, Ardunios hab ich ja auch schon geflasht und auch das war anfangs echt schwierig. Andere gehen golfen ich beiss mich nun hier durch.

hab nach Test::JSON Installation auch gesucht

Danke für den Hinweis

und schon geht es

ich hab mal versucht meine Schritte in einem pdf zusammenzufassen, incl der Fehlermeldung die ich wie Sailor bekommen habe. Ich habe das PDF im Thread
https://forum.fhem.de/index.php?topic=71388.msg628888#msg628888
im ersten Post für den den es interessiert
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

Prof. Dr. Peter Henning

ZitatAndere gehen golfen ich beiss mich nun hier durch.

Stimmt, habe heute nachmittag ein Turnier gespielt.

LG

pah

Sailor

Ein herzerfrischendes "Moin" vom HinternDeich vorweg!

So, dank dem Hinweis von pah und seinem Wiki habe ich DoorPi auf einem RasPi mit PiFac2 so weit am Laufen....

Danke pah!

- Auf den S0 gedrückt und schon klappt ein Anruf auf dem Handy.

- Auf "#" gedrückt und schon schaltet hörbar das Relais inklusive der zugehörigen LED.

- Ich kann auch selbst den DoorPi anrufen und die Tür öffnen ohne, dass Jemand vorher geklingelt hat.

- Das Modul DoorPi konnte in fhem eingebunden werden und die Befehle werden von fhem heraus auch brav an den DoorPi übergeben und ausgeführt (Licht an / Licht aus)

- Der DoorPi sendet auch nach einem "set DoorStation light on-for-timer" Befehl nach Ablauf einer Weile auch den "off" status zurück.

- Ich konnte (im Gegensatz zu meiner Außenkamera) den Stream der Raspi-Kamera direkt in fhem mit bewegenden Live Bildern einbinden.
define DoorStationCam weblink htmlCode <img src="http://192.168.178.??:9000/?action=stream" width="640" height="352" alt="Door Station">


73_DoorPi.pm Modulversion ist übrigens DoorStation.version => 2.0alpha8
FHEMHelper.sh
#  History
#  no_Legend 2016-09-28: Hinzufügen von verschiedenen Variablen, sowie bedingte Ausführung
#                        der Textausgaben auf einem TTS_Device.


Was noch stört sind die Fehlermeldungen nach jedem Befehl:


jquery.min.js line 4:
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data


Das Log-File sieht folgendermaßen aus:


2017.05.09 20:04:43.396 1: FHEMWEB SSL/HTTPS error:  SSL accept attempt failed error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
2017.05.09 20:45:36.461 1: FHEMWEB SSL/HTTPS error:  SSL connect accept failed because of handshake problems error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
2017.05.09 20:51:01.007 1: FHEMWEB SSL/HTTPS error:  SSL connect accept failed because of handshake problems error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
2017.05.09 20:51:31.907 1: FHEMWEB SSL/HTTPS error:  SSL connect accept failed because of handshake problems error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
2017.05.09 20:52:19.775 3: [DoorPi_GetHistory] found 14 events
2017.05.09 20:52:19.778 1: [DoorPi_GetHistory] No snapshot found with 2017-05-09_20-51-08.jpg
2017.05.09 20:52:19.780 1: [DoorPi_GetHistory] No snapshot found with 2017-05-09_20-50-29.jpg
2017.05.09 20:54:21.441 1: FHEMWEB SSL/HTTPS error:  SSL connect accept failed because of handshake problems error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
2017.05.09 20:55:40.121 3: [DoorPi_GetHistory] found 0 events
2017.05.09 20:55:55.879 1: FHEMWEB SSL/HTTPS error:  SSL connect accept failed because of handshake problems error:14094418:SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $d in hash element at fhem.pl line 4053.
Use of uninitialized value $a[0] in string eq at ./FHEM/70_DoorPi.pm line 258.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in regexp compilation at ./FHEM/70_DoorPi.pm line 278.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 281.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 334.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 349.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 349.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 353.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 357.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 366.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 391.
Use of uninitialized value $key in pattern match (m//) at ./FHEM/70_DoorPi.pm line 400.
Use of uninitialized value $key in string eq at ./FHEM/70_DoorPi.pm line 402.
2017.05.09 21:06:06.056 1: [DoorPi_Door 1] sent 'dooropen' command to DoorPi


Was ich mich die ganze Zeit Frage ist: Wie wird DoorPi dazu in die Lage versetzt, meinen fhem-Server zu maipulieren, obwohl ich den auf "https://" am Laufen und nirgendwo mein Username/Password angegeben habe.  :o

Da kann ja Jeder kommen... ::)

Gruß
    Sailor
******************************
Man wird immer besser...