Mit FHEM auf einem anderen RPI GPIO schaltern ?

Begonnen von cs-online, 09 September 2018, 14:39:44

Vorheriges Thema - Nächstes Thema

cs-online

Hallo,

ich habe FHEM auf einem RPI 2 und habe einen RPI Zero W ohne FHEM, auf dem ich WiringPi installiert habe. Der ZeroW wird sonst für den Empfang von XIAOMI Pflanzensensoren über BLE genutzt, daher ist da schon die SSH-Verbindung vom FHEM-Raspi möglich. Wenn ich auf dem FHEM-Raspi nun dies hier eingebe:

ssh 'pi@FHEM-IP' gpio -g read 17

dann bekomme ich auch eine 1 oder 0, je nach Zustand. Soweit alles gut. Wenn ich aber in FHEM dies eingebe:

{system("ssh 'pi@192.168.2.21' gpio -g read 17")}

dann bekomme ich nach einigem Warten nur eine "-1", egal welcher Zustand. Das gleiche, wenn ich so einen GPIO setzen will.

Ich habe auch das RPI_GPIO - Modul probiert, aber damit scheine ich nur auf dem FHEM-Raspi die GPIOs schalten zu können.

Kann mir jemand helfen ?

Danke im Voraus,

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

Als welchen User probierst Du es und unter welchem User läuft fhem?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

ähm, gute Frage... Also im Terminal bin ich immer als PI angemeldet. Wie bekomme ich heraus, unter welchem User FHEM läuft ? Fhem kann aber auch über SSH meine XIAOMIs auf dem ZeroW abfragen, daher dachte ich, das müßte doch so auch gehen oder ?
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wzut

das system immer -1 zurückliefert ist normal und das Thema hatten wir hier die letzten zwei Monate schon mehrfach ....
Lösung :  qx ist dein Freund
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

cs-online

Es geht ja nicht nur um die Antwort, auch ein Schaltbegehl wird nicht ausgeführt.
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wzut

Zitat von: cs-online am 09 September 2018, 14:39:44
ssh 'pi@FHEM-IP' gpio -g read 17

bekomme ich auch eine 1 oder 0, je nach Zustand. Soweit alles gut. Wenn ich aber in FHEM dies eingebe:

{system("ssh 'pi@192.168.2.21' gpio -g read 17")}
Im ersten Fall bist du vermutlich der User pi in der lokalen bash ?
Im zweiten Fall ist es aber IMHO der FHEM default User fhem , der jetzt eine ssh Sitzung startet !
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Otto123

Zitat von: cs-online am 09 September 2018, 15:02:24
ähm, gute Frage... Also im Terminal bin ich immer als PI angemeldet. Wie bekomme ich heraus, unter welchem User FHEM läuft ? Fhem kann aber auch über SSH meine XIAOMIs auf dem ZeroW abfragen, daher dachte ich, das müßte doch so auch gehen oder ?
Der Zero-W hat die IP 192.168.2.21 ?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cs-online

Zitat von: Otto123 am 09 September 2018, 22:07:45
Der Zero-W hat die IP 192.168.2.21 ?

Gruß Otto

Ja, das ist die IP vom Zero, also nicht dem wo FHEM drauf läuft. Und (auch wenn ich Paddel das wieder falsch geschrieben habe) ist auch bei dem hier

ssh 'pi@FHEM-IP' gpio -g read 17

die IP die 192.168.2.21. Also beide Male auf dem FHEM-Raspi eingegeben (einmal im Terminal mit Putty und einmal in die Befehlszeile oben im FHEM). Der FHEM-User hat aber extra für die Geschichte mit den XIAOMI Pflanzensensoren die Berechtigung für SSH auf dem Zero bekommen. Deshalb ist mir nicht so ganz klar, warum das nicht will....
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Otto123

Moin,

am einfachsten wirfst Du das in die Kommandozeile von FHEM:
"ssh 'pi@192.168.2.21' gpio -g read 17" und schaust mal was zurück kommt.

Wozu sind die ' ' in deinem Aufruf? Lass die mal weg, also zweiter Versuch dann so:
"ssh pi@192.168.2.21 gpio -g read 17"


Wenn Du dann einen Wert zurück haben willst, kannst Du auch so in der Kommandozeile testen:
{my $wert = qx 'ssh pi@192.168.2.21 gpio -g read 17'}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cs-online

Hallo Otto,

danke für die Hilfe !

Bei den ersten beiden wird nichts angezeigt, aber beim dritten kommt tatsächlich der richtige Wert raus. Wenn ich dann oben

"ssh pi@192.168.2.21 gpio -g write 17 0"

eingebe, wechselt die Anzeige bei dem dritten auch tatsächlich auf 0 :-)

dann kann ich mir in der Kommandozeile das {System(.... dann tatsächlich weglassen ? Und wenn ich das dann in einer Perl-Funktion aufrufen will, kann ich dann auch einfach

fhem("ssh pi@192.168.2.21 gpio -g read 17");

reinschreiben oder muss ich da noch was beachten ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Otto123

#10
Dass wäre dann: vor, zurück, zur Seite, ran.
;D ;D ;D
Aber auch falsch, da müssten doppelte "" hin

ZitatBei den ersten beiden wird nichts angezeigt, ...
Zumindest der zweite Befehl zeigt Dir zwar nichts im Browser, die Ausgabe landet im Log!
ZitatUnd wenn ich das dann in einer Perl-Funktion aufrufen will,
Was stört Dich an dem Perl Aufruf mit qx?
{my $wert = qx 'ssh pi@192.168.2.21 gpio -g read 17'}
https://commandref.fhem.de/commandref_DE.html#command

Zusammenfassung
1. Du brauchst den Perl Befehl system nicht, wenn Du in FHEM einen System Befehl aufrufen willst! Dann genügt "Befehl"
2. system() - ist die schlechteste Wahl (obwohl der Name schön klingt), denn der Befehl liefert keinen sinnvollen Wert sondern innerhalb von FHEM  nur -1 zurück.
2. In Perl würde ich immer qx() nehmen, der liefert Dir das Ergebnis zurück.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cs-online

Zitat von: Otto123 am 13 September 2018, 13:40:41
!Was stört Dich an dem Perl Aufruf mit qx?
{my $wert = qx 'ssh pi@192.168.2.21 gpio -g read 17'}

...um ehrlich zu sein kannte ich das bisher gar nicht (hab ich so noch nicht gebraucht), aber ich will das gerne mal ausprobieren, das gibt dann neue Möglichkeiten :-)

Dir erstmal vielen Dank, werde berichten, ob es bei mir läuft

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

cs-online

Hallo zusammen,

ich muss den Thread nochmal raus kramen... Das hat soweit super geklappt, ich kann damit z.B. in einem Notify die GPIOs setzen. Jetzt bastel ich mir gerade eine Bewässerung für mein Gewächshaus und habe da ein Ventil, das schaltet darüber, dass der GPIO eingeschaltet und wenige Sekunden später wieder ausgeschaltet werden muss. Sozusagen wie Taster drücken. Einschalten klappt, nur das Ausschalten über einen Timer will nicht klappen. So wie unten geschrieben kommt im Log kein Fehler, allerdings schaltet der GPIO nicht wieder aus... Wo kann der Fehler liegen ? oder gibt es noch andere Möglichkeiten, sozusagen mit Delay wieder auszuschalten ?


Wasserhahn:.* {
my $wert3 = 0;

my $wert2 = qx 'ssh pi@192.168.2.21 gpio -g write 17 1';

fhem("define tmp at +00:00:10 {$wert3 = qx 'ssh pi@192.168.2.21 gpio -g write 17 1';}");;
return 0;
}


so direkt aus der Edit-Ansicht heraus kopiert...

Hier die Ausgabe aus dem LOG:

2019.04.23 10:58:44 5: Triggering Gewaechshaus_Wasserhahn
2019.04.23 10:58:44 4: Gewaechshaus_Wasserhahn exec {
my $wert3 = 0;;

my $wert2 = qx 'ssh pi@192.168.2.21 gpio -g write 17 1';;

fhem("define tmp at +00:00:10 {$wert3 = qx 'ssh pi@192.168.2.21 gpio -g write 17 1';;}");;;;
return 0;;
}
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Otto123

#13
Muss Du nicht zum Ausschalten eine 0 ausgeben?
Zitatgpio -g write 17 1
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wernieman

Ich würde Dir empfehlen, es nicht über FHEM zu machen, sondern direkt auf dem 2. Pi, also beim Aufruf.

Denn dann kann währen dieser Zeit die Verbindung wegbrechen, FHEM einen "§Schluckauf" bekommen und der Ausschaltbefehl kommt trotzdem durch!

Wasserhahn:.* "ssh pi@192.168.2.21 taste.sh 17"

Und auf dem Pi ein Script namens taste.sh
#!/bin/bash
PORT=$1
gpio -g write $PORT 1
sleep 10
gpio -g write $PORT 0


Kleine Ergänzungen:
- Willst Du wirklich auf JEDES Event von Wasserhahn Trickern? Kann man das nicht noch mehr einschränken?
- qx ist blockierend, Du brauchst aber in Deinem Script nicht die Rückgabewerte
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

Ja, da hast du natürlich Recht, das ist beim x-mal hin und her-probieren und kopieren passiert.... Aber auch auf 0 geändert ändert das nichts... Merkwürdigerweise wird der Timer mit diesen Internals angelegt, sieht doch merkwürdig aus oder ?

COMMAND    {0 = qx 'ssh pi.168.2.21 gpio -g write 17 0'
   DEF        2019-04-23T13:01:33 {0 = qx 'ssh pi.168.2.21 gpio -g write 17 0'
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

Ist doch logisch, da die Variablen Ausgewertet werden .... Lies mal Deinen Code.

P.S.
Möchte auf mein Posting vor Deinen hinweisen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

Zitat von: Wernieman am 23 April 2019, 12:54:09
Ich würde Dir empfehlen, es nicht über FHEM zu machen, sondern direkt auf dem 2. Pi, also beim Aufruf.

Denn dann kann währen dieser Zeit die Verbindung wegbrechen, FHEM einen "§Schluckauf" bekommen und der Ausschaltbefehl kommt trotzdem durch!

Wasserhahn:.* "ssh pi@192.168.2.21 taste.sh 17"

Und auf dem Pi ein Script namens taste.sh
#!/bin/bash
PORT=$1
gpio -g write $PORT 1
sleep 10
gpio -g write $PORT 0


Kleine Ergänzungen:
- Willst Du wirklich auf JEDES Event von Wasserhahn Trickern? Kann man das nicht noch mehr einschränken?
- qx ist blockierend, Du brauchst aber in Deinem Script nicht die Rückgabewerte

Hallo, das ist ein cooler Ansatz, wäre mir auch lieber, wenn das nicht auf dem FHEM-Server laufen müßte... Hatte aber keine bessere Idee, muss ich zugeben...

Wo packe ich das Script denn auf dem zweiten Raspi hin ? Und mich würde auch trotzdem (weil ich das ja auch mal lernen möchte) wissen, wie das mit dem Timer richtig gegangen wäre...
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Otto123

Ja wie auch immer, Du bekommst in keiner Variante eigentlich den Wert nach wert3 zurück, da Du ein externes at aufrufst. Also zumindest fällt mir da nix ein.
Mach es so wie Werner vorgeschlagen hat!

Wenn Du die Rückmeldung von deinem Pi zero haben willst, ginge es hiermit.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cs-online

nee, Rückmeldung brauche ich nicht, aber das war halt so, wie du mir das mal geschrieben hast und im "normalen" Aufruf hat das ja auch geklappt...
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Otto123

#20
Zitat von: cs-online am 23 April 2019, 13:01:09
Hallo, das ist ein cooler Ansatz, wäre mir auch lieber, wenn das nicht auf dem FHEM-Server laufen müßte... Hatte aber keine bessere Idee, muss ich zugeben...

Wo packe ich das Script denn auf dem zweiten Raspi hin ? Und mich würde auch trotzdem (weil ich das ja auch mal lernen möchte) wissen, wie das mit dem Timer richtig gegangen wäre...
das Script einfach ins /home/pi auf dem Pi zero
So sollte das mit deinem Timer gehen:
fhem("define tmp at +00:00:10 {qx 'ssh pi@192.168.2.21 gpio -g write 17 0'}")

Und eigentlich auch so (ohne den Perl Umweg) direkt in fhem:
Wasserhahn:.* "ssh pi@192.168.2.21 gpio -g write 17 1";sleep 10;"ssh pi@192.168.2.21 gpio -g write 17 0"

FHEM setzt diese Kombination sleep 10;"ssh pi@192.168.2.21 gpio -g write 17 0" so um, wie Du es gemacht hast. :D

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cs-online

Erstmal danke (bevor ich es vergesse) !

Das Script habe ich nach home/pi geschoben und mit Recht 777 also für alle User berechtigt. Muss ich das noch ausführbar machen ? Ich bekomme nämlich trotzdem diesen Fehler

bash: taste.sh: Kommando nicht gefunden.

und blockiert sleep nicht den FHEM-Server ?
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Otto123

#22
Die Rechte sind egal, Du bist pi!
Entweder chmod +x taste.sh
oder den Aufruf ändern (mach ich immer)
bash taste.sh
Zitatund blockiert sleep nicht den FHEM-Server ?
ein fhem sleep mit einem Befehl danach blockiert nicht. Perl sleep blockiert.
Ein sleep im bash Script welches mit "script.sh" aufgerufen wird blockiert auch nicht.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

cs-online

Jau, Ihr seid spitze !!!! Und ich hab wieder was gelernt.


Daaaaaanke :-)
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Christoph Morrison

Mal 'ne blöde Frage: Warum installierst du dir auf deinem Gewächshaus-Pi nicht doch auch FHEM und schaltest die GPIO darüber? Dann kannst du dort auch z.B. MQTT komfortabel nutzen um den Einschaltbefehl von deinem Haupt-FHEM zu übertragen.

Hätte dir fast alle Probleme hier im Thread erspart (und wird dir vermutlich weitere Probleme ersparen).

cs-online

Ja, war zwischendurch auch mal ein Gedanke, aber da das nur ein ZeroW ist, wollte ich den nicht unbedingt überfrachten... und wenn das so funktioniert, dann reicht mir das völlig aus :-)
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

Also ich kann verstehen, nicht überall FHEM drauf zu machen ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

majorshark

Ich habe auf meinem Heizungs-Pi einen schmalen MQTT-Client installiert.
Damit kann man die GPIO dann lesen und schreiben. Zusätzlich kann der Client auch noch I2C. Ich meine nur Gewächshaus und Temperatur ...
Funktioniert bei mir absolut zuverlässig.
https://github.com/flyte/pi-mqtt-gpio
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

cs-online

FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

cs-online

Hallo zusammen,

ich bräuchte nochmal eure Hilfe zu diesem alten Beitrag. Bis zum Ende des letzten Gartenjahres lief das alles toll. Nun heute wieder im Gewächshaus angeklemmt, bekomme ich immer diese Einträge im Log:

2022.05.26 17:13:34 5: Triggering Gewaechshaus_Wasserhahn
2022.05.26 17:13:34 4: Gewaechshaus_Wasserhahn exec "ssh pi@192.168.2.21 bash taste.sh 17"

Host key verification failed.


ich habe bereits den Inhalt der known_hosts gelöscht, mittels ssh PI@192.168.2.21 wieder den Host eintragen lassen, nach Ottos Anleitung unter https://heinz-otto.blogspot.com/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html
das dort abgearbeitet, Google rauf und runter, ich kann auf dem FHEM-Server im Terminal  ssh pi@192.168.2.21 bash taste.sh 17 aufrufen, es funktioniert, auch nun ohne PW-Eingabe, aber im FHEM halt eben nicht. Ich habe auch das .ssh Verzeichnis von PI nach OPT/FHEM kopiert, Rechte vergeben, komm da auch als PI rein. Und nun weiß ich wirklich nicht mehr weiter als absoluter Nerd in Sachen Linux... Könnt Ihr mir bitte einen Tipp geben ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

- Hast Du es als User pi oder als User fhem probiert?
- Hast Du es in der FHEM-Commandozeile probiert?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

Hallo,

im Terminal auf dem FHEM-Server habe ich das so einkopiert: ssh pi@192.168.2.21 bash taste.sh 17

Funktioniert dann. Aber vermutlich als PI, aber das hat ja immer funktioniert und am FHEM-Server selber habe ich ausser FHEM-Updates nichts geändert, soweit ich mich erinnere.

Wenn ich das in der Kommandozeile eingeben will (ich habe das direkt probiert, ich habe System("ssh pi@192.168.2.21 bash taste.sh 17") mit und ohne {} davor/dahinter probiert), bekomme ich immer diverse Fehler, die darauf schließen lassen, dass ich das falsch eingebe.

Ich hab von Linux keinen Plan, ich nutz das nur für FHEM und stehe da ganz offen gestanden auch mit auf Kriegsfuss mit den ganzen Rechten und Gruppen und und und ....

Was kann ich tun, um das weiter einzugrenzen ?

Grüße

Christian

FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

FHEM läuft als User FHEM und NICHT als PI!

Du könntest Du known_host vom User PI zum User FHEM kopieren, must aber auf die Rechte aufpassen. Wie gut kennst Du Dich mit der Konsole aus?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

#33
...ein bißchen, ich hätte aber auch eine grafische Oberfläche... Im Home-Ordner gibt es aber nur den PI-Ordner, keinen FHEM, auch mit sudo ls im Ordner Home ist nur der PI-Ordner drin... und mit su fhem fragt er nach einem PW, ich habe aber nie eins vergeben, soweit ich weiß....


pi@raspberrypi:/home $ su fhem
Passwort:
su: Fehler bei Authentifizierung
pi@raspberrypi:/home $ su fhem
Passwort:
su: Fehler bei Authentifizierung
pi@raspberrypi:/home $ su fhem
Passwort:
pi@raspberrypi:/home $ ls
pi
pi@raspberrypi:/home $ su fhem
Passwort:
pi@raspberrypi:/home $


Beim letzten Versuch habe ich das PW für den User PI eingegeben, dann kommt keine Fehlermeldung, es tut sich aber trotzdem nichts...
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

O.K. Du kennst Dich nicht aus ...

1. Bitte keine Grafische Oberfläche auf einen Server", macht es nur noch komplizierter
2. Mit sudo änderst Du zwar den aktuellen User, gehst aber nicht automatisch in dessen Home-Verzeichnis

Nur um es mal zu verdeutlichen:
sudo ls ~
Du wirst dann das Home-Verzeichnis von root und nicht von fhem sehen ....

Um es kurz zu machen.,
fhem läuft unter dem User fhem. Ein pi hat (bisher) zusätzlich den User pi, damit jemand sich einloggen kann. Es gibt noch viel mehr User, nur mal zum schauen:
cat /etc/passwd
Linux ist ein echtes Mehrbenutzersystem, so das für jeden Deamon (Server-Prozess) meistens ein eigener User genommen wird. Deshalb eben so viele User. Jeder dieser User hat ein eigenes Home-Verzeichnis, was DU auch in der passwd Datei sehen kannst. Normalerweise eben bei pi /home/pi, bei fhem /opt/fhem. Bei root als Besonderheit /root, hat Historische (und Start-Optimierungs) Gründe. Die Programme legen natürlich Daten in dem Aufrufenden User-Kontext ab, also normalerweise im home-Verzeichnis. Deshalb kann etwas als User pi klappen und eben als fhem nicht. Genauso geht es auch andersherum. Dieses ist ein großes Sicherheitsfeature, da eben ein normaler User kein Deamon wie FHEM "ärgern" kann.

Du willst jetzt eigentlich nur, das der User FHEM auf Deinen entfernten PI zugreifen kann. Da dieser User es laut Deiner Fehlermeldung noch nie getan hat, fragt er natürlich ab, ob er es darf. Dieses kann das Programm fhem natürlich nicht beantowrten und es giebt einen fehler.

Zum Lösen kannst Du also eine der folgenden Möglichkeiten Nutzen:
- die Abgelegten Informationen ins Home-Verzeichnis kopieren
- ssh einfach mal sagen, ist schon O.K. und lege ab.

Für letzteres einfach mal in der FHEM-Kommandozeile:
ssh -o "StrictHostKeyChecking=accept-new" <user>@<Zielrechner>
Hinweis: <user> und <Zielrechner> passend ändern!

Nur falls es ein anderer liest, ähnlich kann man auch Key-Änderungen Speichern:
ssh -o "StrictHostKeyChecking no" <user>@<Zielrechner>

Aber bitte nur einmalig. Es gibt schon einen Security-Grund für dieses Key-Check.

Ach und nur um es zu Erwähnen: Ich gehe davon aus, das ein Passwortloser Login mit SSH-key, wie im Thread schon beschrieben, eingerichtet wurde.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

#35
Hallo Wernieman,

erstmal danke, dass du mir helfen magst ! Und ja, ich würde auch meinen, dass ich mich da nicht mit auskenne....

Ein
ssh -o "StrictHostKeyChecking=accept-new" pi@192.168.2.21

in die Kommandozeile (ich gehe mal davon aus, du meinst das Eingabefeld oben auf der FHEM-Seite) gibt den Fehler
Unknown command ssh, try help.

Und ja, ein Passwortloser Login mit SSH-key funktioniert nach der Anleitung von Otto, wenn ich den Befehl aus dem Notify da im Terminal absetze, dann funktioniert das ja ohne PW

Grüße

Christian

EDIT: Wenn ich das mit " in die KOmmandozeile eingebe, tut sich zwar was, aber ich bekomme folgende Einträge im Log:


Pseudo-terminal will not be allocated because stdin is not a terminal.
Failed to add the host to the list of known hosts (/opt/fhem/.ssh/known_hosts).
Load key "/opt/fhem/.ssh/id_rsa": Permission denied
Permission denied, please try again.
Permission denied, please try again.
pi@192.168.2.21: Permission denied (publickey,password).

.ssh und Inhalt habe ich schon auf 777 gesetzt....
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

Zitat.ssh und Inhalt habe ich schon auf 777 gesetzt....

Und schon mal der erste "Fehler". Da in dem Ordner Sicherheitsrelevante Infos liegen, akzeptiert ssh dort nur beschrängtgen Zugriff, sonst wird es ignoriert. Wem gehört überhaupt der Ordner?
ls -lhad /var/opf/fhem/.ssh
ls -lha /var/opf/fhem/.ssh


Hinweis:
Beim ersten wird die Infos vom Ordner abgeholt (-d) und beim 2. der Inhalt vom Ordner .. wichtiger Unterschied ;o)

Und ja .. ich hatte die "" vergessen ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

das ergibt
pi@raspberrypi:~ $ ls -lhad /opt/fhem/.ssh
drwxrwxrwx 2 fhem dialout 4,0K Mai 26 17:12 /opt/fhem/.ssh
pi@raspberrypi:~ $


und

pi@raspberrypi:~ $ ls -lha /opt/fhem/.ssh
insgesamt 32K
drwxrwxrwx  2 fhem dialout 4,0K Mai 26 17:12 .
drwxrwxrwx 20 fhem dialout 4,0K Mai 27 14:10 ..
-rw-------  1 pi   pi       792 Nov 28  2020 authorized_keys
-rw-------  1 pi   pi      1,8K Nov 28  2020 id_rsa
-rwxrwxrwx  1 pi   pi       396 Nov 28  2020 id_rsa.pub
-rw-------  1 pi   pi       884 Mai 26 16:52 known_hosts
-rw-r--r--  1 pi   pi       222 Mai 26 16:04 known_hosts-alt
-rw-r--r--  1 pi   pi         0 Mai 26 16:28 known_hosts-alt-alt
-rwxrwxrwx  1 pi   pi       222 Mai 26 16:43 known_hosts.old
pi@raspberrypi:~ $
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

cs-online

#38
...und da steckte der Hase dann auch im Pfeffer, ein

sudo chown -R fhem *


im Verzeichnis .ssh hat es gebracht. Danke dir für die Unterstützung, ohne die Tipps hätt ich das nicht hinbekommen :-)

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

Allerdings gibt es noch eine Verbesserung:
sudo chown -R fhem: /opt/fhem/.ssh

Normalerweise kommt nach dem ":" die zu setzende Gruppe, wenn die Angabe fehlt, wird die Default-Gruppe des Users genommen (und  nein, die ist normalerweise nicht "dialout"!).
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

cs-online

danke dir für den Hinweis, ich muss mich da wirklich mal dransetzen und verstehen, wie das mit den ganzen komplexen Rechten in Linux funktioniert  :)

Bis dahin erst einmal ganz lieben Dank für die Unterstützung

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Wernieman

Eigentlich ist es einfacher (da älter) als Windows-Rechte. Da bei Windows man aber meistens die Trennung Nutzer/Dienste nicht hat .....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html