FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: günther38 am 02 Oktober 2020, 18:50:04

Titel: [gelöst] Raffstore steuern
Beitrag von: günther38 am 02 Oktober 2020, 18:50:04
Hallo!

Ich habe eine Steuerung/Webserver erstellt, über die ich meine Raffstores hoch/runter fahren kann.
Die URI sieht so aus:
http://xxx.xxx.xxx.xxx/?rc1=up      (Raffstore 1 hoch)
http://xxx.xxx.xxx.xxx/?rc1=down  (Raffstore 1 runter)

Diesen würde ich gerne in FHEM einbinden.
Das müsste doch eigentlich über HTTPMOD GET funktionieren oder?
Kann mir jemand helfen, bzw. ein passendes Beispiel geben?

Beste Grüße
Günther
Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 02 Oktober 2020, 20:01:48
Das packst du z. B. in ein doif


("wget -q -O /dev/null "http://xxx.xxx.xxx.xxx/?rc1=up")

Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 03 Oktober 2020, 08:06:38
Hallo!

Ich habe einen Schalter definiert und diesen in das "DOIF" eingebaut.
Beim Anwählen von "UP" bzw. "DOWN" tut sich noch nichts, was mache ich falsch?



define Schalter1 dummy
attr Schalter1 room Raum1
attr Schalter1 webCmd UP:DOWN
define Raum1.Raffstore1 DOIF ([Schalter1] eq "UP") ("wget -q -O /dev/null "http://xxx.xxx.xxx.xxx/?rc1=up") DOELSEIF ([Schalter1] eq "DOWN") ("wget -q -O /dev/null "http://xxx.xxx.xxx.xxx/?rc1=DOWN")
Titel: Antw:Raffstore steuern
Beitrag von: Beta-User am 03 Oktober 2020, 08:12:43
Evtl. geht es mit ROLLO. Damit sollten auch Zwischenpositionen möglich sein.
Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 03 Oktober 2020, 09:26:26
Zitat von: günther38 am 03 Oktober 2020, 08:06:38
Hallo!

Ich habe einen Schalter definiert und diesen in das "DOIF" eingebaut.
Beim Anwählen von "UP" bzw. "DOWN" tut sich noch nichts, was mache ich falsch?



define Schalter1 dummy
attr Schalter1 room Raum1
attr Schalter1 webCmd UP:DOWN
define Raum1.Raffstore1 DOIF ([Schalter1] eq "UP") ("wget -q -O /dev/null "http://xxx.xxx.xxx.xxx/?rc1=up") DOELSEIF ([Schalter1] eq "DOWN") ("wget -q -O /dev/null "http://xxx.xxx.xxx.xxx/?rc1=DOWN")



Sorry....da war ein "  zuviel
("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rc1=up")
Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 03 Oktober 2020, 11:11:13
Zitat von: Beta-User am 03 Oktober 2020, 08:12:43
Evtl. geht es mit ROLLO. Damit sollten auch Zwischenpositionen möglich sein.

Das hört sich interessant an, aber kann es sein, dass das nur für Relaisschaltungen gedacht ist?
Im ROLLO-FHEMWiki steht,
"...einfache Möglichkeit, mit ein bis zwei Relais den Hoch-/Runterlauf eines Rolladen zu steuern..."

In meinem Fall schalte ich über URIs

Weiters,
"...der Rollladen muss bereits als Device in FHEM existieren und funktionieren (mit Befehlen für "hoch", "runter" und "stop")...""
das tut es bei mir leider auch noch nicht
Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 03 Oktober 2020, 11:12:24
Zitat von: rr725 am 03 Oktober 2020, 09:26:26

Sorry....da war ein "  zuviel
("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rc1=up")


Danke, leider funktioniert es trotzdem nicht
Titel: Antw:Raffstore steuern
Beitrag von: Beta-User am 04 Oktober 2020, 17:14:54
Zitat von: günther38 am 03 Oktober 2020, 11:11:13
Das hört sich interessant an, aber kann es sein, dass das nur für ...
Die vertiefter Erfahrung habe ich mit dem Modul nicht, aber soweit ich das verstanden habe, braucht man das/die "andere/n FHEM-Device/s" eigentlich nur, damit es jeweils einen "Adressaten" für Befehle gibt. Aber wenn das direkt als URL-Kommando-rausgeht, _könnte_ es eigentlich auch ganz ohne klappen. Im Zweifel mal im ROLLO-Thread nachfragen.
Wenn es klappt, ist das jedenfalls mMn. die einfachste Variante...
Titel: Antw:Raffstore steuern
Beitrag von: enno am 04 Oktober 2020, 18:26:42
Zitat von: günther38 am 03 Oktober 2020, 11:12:24

Danke, leider funktioniert es trotzdem nicht

Ich würde tippen, da fehlen noch ein paar geschweifte Klammern:

{("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rc1=up")}

Gruss
  Enno
Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 04 Oktober 2020, 20:04:12
Zitat von: enno am 04 Oktober 2020, 18:26:42
Ich würde tippen, da fehlen noch ein paar geschweifte Klammern:

{("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rc1=up")}

Gruss
  Enno

Hallo!

Ich habe es jetzt auch mit geschweiften Klammern probiert, aber leider wird das Signal auch damit nicht übertragen.
Hat eventuell noch jemand eine Idee dazu?
Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 04 Oktober 2020, 20:06:25
Bei mir funktioniert es wie ich es oben angegeben habe. Ohne geschw. Klammern.
Ich schätze du hast keine Berechtigungen vergeben um systembefehle ausführen zu können
Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 04 Oktober 2020, 20:24:40
Zwischeninfo!

Zum Testen habe ich mal via HTTPMOD die Statusabfrage die im Webserver implementiert ist abgefragt.
Wenn ich direkt http://xxx.xxx.xxx.xxx/?rs1=down oder http://xxx.xxx.xxx.xxx/?rs1=up im Browser aufrufe,
wird dies am Raffstore umgesetzt und in FHEM der Status (DOWN bzw. UP) richtig angezeigt.
D.h. verbindungseitig sollte doch eigentlich alles OK sein oder?


define RaffstoreArduino HTTPMOD http://xxx.xxx.xxx.xxx/ 10
attr RaffstoreArduino userattr reading01Name reading01Regex stateFormat
attr RaffstoreArduino reading01Name status
attr RaffstoreArduino reading01Regex status *: *(.*)
attr RaffstoreArduino stateFormat Status: status
Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 04 Oktober 2020, 20:36:34
Zitat von: rr725 am 04 Oktober 2020, 20:06:25
Bei mir funktioniert es wie ich es oben angegeben habe. Ohne geschw. Klammern.
Ich schätze du hast keine Berechtigungen vergeben um systembefehle ausführen zu können

OK, schaue ich gleich mal nach,
soll ich dass so wie hier: https://www.ueberueck.com/index.php/fhem-hausautomatisierung/fhem-how-to-s/raspberry-aus-fhem-neu-starten
beschrieben setzen?
Titel: Antw:Raffstore steuern
Beitrag von: MadMax-FHEM am 04 Oktober 2020, 20:43:28
Ich würde nicht nach dem verlinkten Beitrag vorgehen, weil:

du für dein Vorgehen mAn keine Login-Shell brauchst

man die sudoers mittels visudo bearbeiten sollte

ab Stretch/Buster jeder User eine eigene sudoers-Datei unter /etc/sudoers.d/ hat (pi sollte schon "vertreten" sein)

man über sudo nur die Befehle ohne PW erlauben sollte, die man auch braucht

Gruß, Joachim
Titel: Antw:Raffstore steuern
Beitrag von: enno am 04 Oktober 2020, 21:16:26
Hast du mal versucht den Befehl in der FHEM Statuszeile direkt einzugeben? Lass doch erst mal -q weg, dann müsstest du eigentlich eine Fehlermeldung oder Antwort bekommen. Vielleicht kommst du damit ja weiter.

Gruss
  Enno
Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 05 Oktober 2020, 12:22:46
Zitat von: enno am 04 Oktober 2020, 21:16:26
Hast du mal versucht den Befehl in der FHEM Statuszeile direkt einzugeben? Lass doch erst mal -q weg, dann müsstest du eigentlich eine Fehlermeldung oder Antwort bekommen. Vielleicht kommst du damit ja weiter.

Gruss
  Enno

Hallo Enno!

Wenn ich wie von dir vorgeschlagen den Befehl,
"wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up"
direkt in der FHEM Statuszeile ausführe, dann klappt es!

Im Logfile steht dann folgendes:

--2020-10-05 12:26:13--  http://xxx.xxx.xxx.xxx/?rs3=up
Connecting to xxx.xxx.xxx.xxx:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: '/dev/null'

     0K                                                        52.4K=0.01s

2020-10-05 12:26:13 (52.4 KB/s) - '/dev/null' saved [596]


D.h. irgentwas passt da in dem DOIF noch nicht, richtig?

Gruss
Günther
Titel: Antw:Raffstore steuern
Beitrag von: Beta-User am 05 Oktober 2020, 12:28:45
Vermutlich hängt das auch am Command-Typ:
https://fhem.de/commandref_modular.html#command (https://fhem.de/commandref_modular.html#command)

Das muss als System-Kommando zu erkennen sein, evtl. kann es helfen, das in "qx()" einzupacken (blockiert aber ggf.!)...
(Da es den HTTPMOD schon gibt: auch da gibt es die Möglichkeit, direkt set-Kommandos zu implementieren, die man dann für DOIF/ROLLO/... ansprechen kann).

EDIT: das hier hat grade die Suche mit ROLLO und wget zu Tage gefördert: https://forum.fhem.de/index.php/topic,47202.msg757108.html#msg757108
Titel: Antw:Raffstore steuern
Beitrag von: enno am 05 Oktober 2020, 13:29:40
dann versuch im DOIF doch mal mit ({qx(wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up)})

Gruss
  Enno
Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 05 Oktober 2020, 13:50:26
so...noch einmal.....so funktioniert es- sprich diese syntax funktioniert.

define Rollo_Kueche_auf DOIF ([Rollo_Kueche] eq "on") ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/cm?cmnd=power1%20on")  DOELSE ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/cm?cmnd=power1%20off")

wenn es bei dir so nicht funktioniert überprüfe die berchtigungen. ich habe meinen fhem user in die root gruppe gepackt. somit darf er alles auf systemebene.

Oder.....
Damit der FHEM Benutzer Benutzer "fhem" sudo Befehle ausführen darf, diesen konfigurieren. In der Datei "/etc/sudoers" folgende Zeile hinzufügen:

fhem ALL=(ALL) NOPASSWD: ALL



Titel: Antw:Raffstore steuern
Beitrag von: Beta-User am 05 Oktober 2020, 14:01:59
Zitat von: rr725 am 05 Oktober 2020, 13:50:26
ich habe meinen fhem user in die root gruppe gepackt. somit darf er alles auf systemebene.
...das ist in der Pauschalität definitiv nicht zur Nachahmung zu empfehlen...

(no further comment)
Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 05 Oktober 2020, 14:06:11
Wieso....jeder sollte wissen was er macht, welche Auswirkungen es hat. Zum testen ?!

Mein raspberry ist nicht mit dem inet verbunden....da ist's egal......

Titel: Antw:Raffstore steuern
Beitrag von: Beta-User am 05 Oktober 2020, 14:33:21
Zitat von: rr725 am 05 Oktober 2020, 14:06:11
Wieso....jeder sollte wissen was er macht, welche Auswirkungen es hat. Zum testen ?!Mein raspberry ist nicht mit dem inet verbunden...
Genau, dann hoffe ich mal, dass du und der TE es jweils wissen, was sie machen...

Und sorry, dass ich den überdeutlichen Hinweis überlesen hatte, dass du nur eine Insellösung betreibst ;) .
Vermutlich habe ich das hier auch nicht richtig interpretiert, wenn ich mit dem mal davon ausgehe, dass das Thema Berechtigungen vom Tisch war...?
Zitat von: günther38 am 05 Oktober 2020, 12:22:46
Wenn ich wie von dir vorgeschlagen den Befehl,
"wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up"
direkt in der FHEM Statuszeile ausführe, dann klappt es!
(Ansonsten bin ich unbelehrbar und bleibe ich bei meiner Auffassung, dass fhem als Systemuser zu halten ist, der keine erweiterten Berechtigungen benötigt!)
Titel: Antw:Raffstore steuern
Beitrag von: enno am 05 Oktober 2020, 15:50:10
Zitat von: rr725 am 05 Oktober 2020, 13:50:26
Oder.....
Damit der FHEM Benutzer Benutzer "fhem" sudo Befehle ausführen darf, diesen konfigurieren. In der Datei "/etc/sudoers" folgende Zeile hinzufügen:

fhem ALL=(ALL) NOPASSWD: ALL

Das würde ich freiwillig nicht machen! So wie Günther oben geschrieben hat geht es als FHEM User auch ohne sudo!! Diese Änderung bringt also rein gar nichts ausser ein Sicherheitsproblem. Das Problem ist wohl in DOIF versteckt...

Gruss
  Enno
Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 05 Oktober 2020, 16:13:11
Zitat von: enno am 05 Oktober 2020, 15:50:10
Das würde ich freiwillig nicht machen! .Das Problem ist wohl in DOIF versteckt...

Musst du ja auch nicht....er soll es doch auch nur testen um weiter zu kommen. Nur irgendetwas zu kommentieren bringt ihn nicht weiter.
Das es an doif liegen soll ist quatsch. So wie ich es oben eingefügt habe funktioniert es bei mir. Wo bitte soll dann da Problem bei doif liegen ?!
Titel: Antw:Raffstore steuern
Beitrag von: enno am 05 Oktober 2020, 16:53:16
Zitat von: günther38 am 05 Oktober 2020, 12:22:46
Hallo Enno!

Wenn ich wie von dir vorgeschlagen den Befehl,
"wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up"
direkt in der FHEM Statuszeile ausführe, dann klappt es!

@rr725: einfach mal die Antworten auf meine Vorschlage lesen....
Titel: Antw:Raffstore steuern
Beitrag von: Damian am 05 Oktober 2020, 18:07:57
Hat schon einer ins Logfile geschaut?

Bei mir liefert "wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up" in der Kommandozeile sowie als Befehl in DOIF
z.B.

defmod di_an DOIF ([FS])("wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up")

die gleichen Ergebnisse.

Das hätte ich auch nicht anders erwartet, da DOIF die gleichen FHEM-Funktionsaufrufe benutzt.
Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 07 Oktober 2020, 22:19:21
Kannst du mir bitte die Definition des Schalters "FS" von
defmod di_an DOIF ([FS])("wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up")
dazu schreiben?
Eventuell mache ich da etwas falsch.




Titel: Antw:Raffstore steuern
Beitrag von: Damian am 07 Oktober 2020, 23:29:22
Zitat von: günther38 am 07 Oktober 2020, 22:19:21
Kannst du mir bitte die Definition des Schalters "FS" von
defmod di_an DOIF ([FS])("wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up")
dazu schreiben?
Eventuell mache ich da etwas falsch.

FS ist hier unerheblich, es ist bei mir einfach eine FS20-Taste, damit löse ich die Ausführung aus.
Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 08 Oktober 2020, 08:58:11
Zitat von: günther38 am 07 Oktober 2020, 22:19:21
Kannst du mir bitte die Definition des Schalters "FS" von
defmod di_an DOIF ([FS])("wget -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up")
dazu schreiben?
Eventuell mache ich da etwas falsch.

Warum machst du denn nicht was man dir anbietet, wenn man sich schon die Mühe macht ?!
Ich habe dir doch oben ein komplettes fehlerfreies, funktionsfähiges  Beispiel gegeben. Mit allem  pi pa po.

Titel: Antw:Raffstore steuern
Beitrag von: günther38 am 11 Oktober 2020, 16:44:17
Hallo!

Ich habe es nun zum Teil geschafft!

Wenn ich den Vergleichswert (UP, DOWN) in die [] mit rein packe anstatt mit "eq" zu arbeiten,



define Schalter1 dummy
attr Schalter1 room Raum1
attr Schalter1 webCmd UP:DOWN

define Raum1.Raffstore1
DOIF ([Schalter1:"UP"]) ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up")
DOELSEIF ([Schalter1:"DOWN"]) ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=down")




kann ich "Raffstore1" mit "Schalter1" hoch bzw. runter fahren.

Das ganze enthält jetzt noch folgenden Fehler,
Wenn ich z.B. "UP" fahre und danach nochmals den "UP"-Befehl gebe, wird dieser nicht mehr umgesetzt.
Ich muss dann einmal "Down" fahren, danach wird der "UP"-Befehl wieder ausgeführt.
Umgekehrt verhält es sich genau so.

Kann es sein, dass auf den letzten "State" (z.B. UP) geprüft wird und daher dieser nicht nochmal ausgeführt wird, da er ja schon erreicht ist?
Könnt ihr mir disbezüglich nochmal einen Hinweis geben, woran es liegt, bzw. wie ich das lösen könnte?

Titel: Antw:Raffstore steuern
Beitrag von: rr725 am 11 Oktober 2020, 18:37:41
Setze das Attribut  do always
Titel: [gelöst] Antw:Raffstore steuern
Beitrag von: günther38 am 11 Oktober 2020, 19:27:11
Danke!!!

So funktioniert es.


define Schalter1 dummy
attr Schalter1 room Raum1
attr Schalter1 webCmd UP:DOWN

define Raum1.Raffstore1
DOIF ([Schalter1:"UP"]) ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up")
DOELSEIF ([Schalter1:"DOWN"]) ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=down")
attr Raum1.Raffstore1 do always


Ach ja, zur allgemeinen Information, ich musste keine Berechtigungen anpassen.
Titel: Antw:Raffstore steuern
Beitrag von: Damian am 11 Oktober 2020, 19:38:15
Zitat von: günther38 am 11 Oktober 2020, 19:27:11
Danke!!!

So funktioniert es.


define Schalter1 dummy
attr Schalter1 room Raum1
attr Schalter1 webCmd UP:DOWN

define Raum1.Raffstore1
DOIF ([Schalter1:"UP"]) ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=up")
DOELSEIF ([Schalter1:"DOWN"]) ("wget -q -O /dev/null http://xxx.xxx.xxx.xxx/?rs3=down")
attr Raum1.Raffstore1 do always


Ach ja, zur allgemeinen Information, ich musste keine Berechtigungen anpassen.

Das ist ja schön.

Allerdings verstehe ich nicht, warum es bis zur Auflösung so viele Posts gebraucht hat, wenn bereits im zweiten Post der korrekte Vorschlag drin stand.
Titel: Antw:Raffstore steuern
Beitrag von: enno am 11 Oktober 2020, 20:03:56
Zitat von: günther38 am 11 Oktober 2020, 19:27:11
Ach ja, zur allgemeinen Information, ich musste keine Berechtigungen anpassen.

Sehr schön! Herzlichen Glückwunsch, schreib mal im Titel [gelöst] davor.

Gruss
  Enno