FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Stargazer am 11 Oktober 2016, 12:58:07

Titel: Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 11 Oktober 2016, 12:58:07
Hallo in die Runde,

nachdem ich meinen Arduino mit EthernetShield ja nun Dank Joachim zum laufen bekommen habe, habe ich die Befehlszeilen aus dem Wiki-Beitrag genommen um einen Test in FHEM zu machen. Das ist der Code:

define arduinobutton FS20 55d1 00
attr arduinobutton room Arduino
define FileLog_arduinobutton FileLog /otp/fhem/log/arduinobuttonon-%Y.log arduinobutton
attr FileLog_arduinobutton room Arduino
define arduinoswitchon notify FS20_55d100:on { GetHttpFile("arduino:80","/?cmd=set_D5_ON")}
attr arduinoswitchon room Arduino
define arduinoswitchoff notify FS20_55d100:off { GetHttpFile("arduino:80","/?cmd=set_D5_OFF")}
attr arduinoswitchoff room Arduino
define weblink_arduinobutton weblink fileplot FileLog_arduinobutton:fs20:CURRENT
attr weblink_arduinobutton label "arduinobutton Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_arduinobutton room Arduino


Wenn ich jetzt den Schalter auf "on", schalte, geht eine LED, die ich zum Test geschaltet habe, nicht an. Über den Befehl von einem Webbrowser kann ich sie jedoch schalten.

Nehme ich den reinen Befehl aus dem Skript, z.B. : { GetHttpFile("arduino:80","/?cmd=set_D5_OFF")} und gebe den oben mit der passenden IP in die FHEM-Befehlszeile ein, funktioniert das tadellos.

Doch wie bekomme ich das Schalten nun hin ?

Versuche ich die LED ganz normal über den set-Befehl anzusprechen, geht das auch nicht.

Ratlose Grüße

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 12 Oktober 2016, 07:28:08
Hallo zusammen,

ich habe gestern nochmal etwa gesucht. Da bin ich über https://forum.fhem.de/index.php?topic=36258.0 (https://forum.fhem.de/index.php?topic=36258.0) gestolpert.
Auch wenn ich dir HTTPUtils zu rate ziehe, müsste es doch eigentlich so laufen, wie es da steht. Aber FHEM führt es so nicht aus.
Wie gesagt...nur wenn ich  { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}  direkt in die Konsole eingebe, funktioniert es.
Ich muss bei mir die "Gänsefüßchen" so lassen, dann geht es wie gesagt.
Die Nuss ist echt schwieriger als man glaubt  :-\.

Viele Grüße

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 12 Oktober 2016, 07:36:05
Hallo Andre,

Die Nuss ist so hart weil Du keine Infos gibst oder selber nicht auf das Wesentliche achtest.

Punkt eins - wird das Notify überhaupt ausgelöst?
Punkt zwei - wenn ja, wird der Befehl überhaupt gesendet?
Punkt drei - wenn ja, was wird genau gesendet?

Suche mal im Forum nach Notify und Logausgaben



Grüße
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 12 Oktober 2016, 20:08:13
Hi CoolTux,

das mit der Nuss mag so sein. Aber ich will ja eigentlich auch nebenbei dazu beitragen, das WiKi zu pflegen. Will eigentlich auch durch solche Beiträge wie diesen auf evtl. veraltete Einträge hinweisen. So wie bei den Libary-Einträgen für den Arduino. Ich persönlich brauche nicht das Firmata für den Arduino. Mir reicht diese Möglichkeit.

Ich habe den Log aktiviert und im Event-Monitor tauch nun folgender Eintraf auf, wenn ich den Button auslöse:     2016-10-12 19:54:13 FS20 arduinobutton on

Mehr kommt nicht. Ich habe das Notify auf verbose 5 gesetzt.

Ich werde mich da so durchbeißen.

Viele Grüße und Danke

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 12 Oktober 2016, 20:35:24
Mehr kommt nicht heißt im Klartext für mich. Dein Notify löst also nicht aus. Dann kann das alles auch nicht klappen. Du musst die Regex für Dein Notify anpassen.

Oder Du lieferst endlich mal Infos mit denen man helfen kann.

list button

list notify

löst das notify aus?
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 12 Oktober 2016, 21:01:10
Hi,

also wenn ich "list arduinobutton" eingebe, gibt er mir folgendes aus:

Internals:
   DEF        FS20_55d100:on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}
   NAME       arduinoswitchon
   NR         104
   NTFY_ORDER 50-arduinoswitchon
   REGEXP     FS20_55d100:on
   STATE      active
   TYPE       notify
   Readings:
     2016-10-12 07:26:46   state           active
Attributes:
   room       Lastregelung
   verbose    5


Das state ist von heute morgen, wo ich es nochmal manuell über den Befehl in der Kommandozeile ausgeführt habe. Im Eventmonitor erscheint nix.
Ebenso beim Notify-List:

Internals:
   DEF        FS20_55d100:on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}
   NAME       arduinoswitchon
   NR         104
   NTFY_ORDER 50-arduinoswitchon
   REGEXP     FS20_55d100:on
   STATE      active
   TYPE       notify
   Readings:
     2016-10-12 07:26:46   state           active
Attributes:
   room       Lastregelung
   verbose    5



Viele Grüße

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 12 Oktober 2016, 21:04:13
Zitat von: Stargazer am 12 Oktober 2016, 21:01:10
Hi,

also wenn ich "list arduinobutton" eingebe, gibt er mir folgendes aus:

Internals:
   DEF        FS20_55d100:on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}
   NAME       arduinoswitchon
   NR         104
   NTFY_ORDER 50-arduinoswitchon
   REGEXP     FS20_55d100:on
   STATE      active
   TYPE       notify
   Readings:
     2016-10-12 07:26:46   state           active
Attributes:
   room       Lastregelung
   verbose    5


Das state ist von heute morgen, wo ich es nochmal manuell über den Befehl in der Kommandozeile ausgeführt habe. Im Eventmonitor erscheint nix.
Ebenso beim Notify-List:

Internals:
   DEF        FS20_55d100:on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}
   NAME       arduinoswitchon
   NR         104
   NTFY_ORDER 50-arduinoswitchon
   REGEXP     FS20_55d100:on
   STATE      active
   TYPE       notify
   Readings:
     2016-10-12 07:26:46   state           active
Attributes:
   room       Lastregelung
   verbose    5



Viele Grüße

André

Ist beides ein list vom notify
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 12 Oktober 2016, 22:05:06
Hi,

Ups... . Sollte beim Button so aussehen..:-

Internals:
   BTN        00
   DEF        55d1 00
   IODevMissing 1
   NAME       arduinobutton
   NR         102
   STATE      off
   TYPE       FS20
   XMIT       55d1
   Code:
     1          55d1 00
   Readings:
     2016-10-12 20:51:30   state           off
Attributes:
   room       Lastregelung



VG

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 12 Oktober 2016, 22:22:42
Ich muß das mal fragen. Wieso ein FS20. So wie ich das sehe hast Du kein IODev, heißt das Teil schaltet gar nichts.
Wenn ich Dich richtig verstanden habe, willst Du doch Dein Arduino schalten, bzw das was da dran hängt. Warum kein Dummy und dann ein passendes Notify?

Dein RegEx vom Notify ist falsch

arduinobutton.on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}

wäre richtig
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 13 Oktober 2016, 18:15:06
Hi CoolTux,

ich habe, da ich mit dem Arduino und FHEM komplett neu unterwegs bin, den Vorschlag aus dem WiKi-Beitrag genommen.
That's it. Da habe ich den einfach mal Stumpf-ist-Trumpf genommen. Den wollte ich dann weiter für mich abändern, so wie ich ihn brauche.

Das mit dem Schalten ist vollkommen richtig. Derzeit habe ich einfach eine LED dran hängen. Einen Dummy hatte ich gestern Abend zum Schluß noch angefangen, aber aus Zeitmangel noch nicht weiter gemacht.
Ich hatte deinen Vorschlag mit dem "arduinobutton.on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}" vorhin probiert.
Läuft aber nicht. Wahrscheinlich muss man das von Grund auf neu aufbauen.

Viele Grüße und besten Dank

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: MadMax-FHEM am 13 Oktober 2016, 20:02:55
Ich bin jetzt auch kein RegEx-Experte aber:

Zitat(Gerätename oder Gerätename:Event)

Müsste es dann nicht sowas wie:

define SchalteArduino notify arduinobutton:on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}

sein...

Bzw. vielleicht erst mal statt gleich den Webaufruf zu tätigen erst mal einen Logeintrag absetzen Log(1,"$NAME $EVENT") um zu sehen ob da was kommt...

Gruß, Joachim
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 13 Oktober 2016, 20:06:24
Zitat von: MadMax-FHEM am 13 Oktober 2016, 20:02:55
Ich bin jetzt auch kein RegEx-Experte aber:

Müsste es dann nicht sowas wie:

define SchalteArduino notify arduinobutton:on { GetHttpFile("192.168.178.110:80","/?cmd=set_D5_ON")}

sein...

Bzw. vielleicht erst mal statt gleich den Webaufruf zu tätigen erst mal einen Logeintrag absetzen Log(1,"$NAME $EVENT") um zu sehen ob da was kommt...

Gruß, Joachim

Zitat
Ich habe den Log aktiviert und im Event-Monitor tauch nun folgender Eintraf auf, wenn ich den Button auslöse:     2016-10-12 19:54:13 FS20 arduinobutton on

Kein Doppelpunkt nach dem Devicenamen. Daher meine RegEx.
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: MadMax-FHEM am 13 Oktober 2016, 20:15:42
Hmmm, eigenartig.

Das Zitat war aus der Commandref http://fhem.de/commandref_DE.html#notify (http://fhem.de/commandref_DE.html#notify) und auch die Beispiele dort sind mit Doppelpunkt sofern neben dem Devivenamen (ist hier doch arduinobutton) auch der Event (hier: on!?) mit im Suchmuster verwendet wird/werden soll??

Zitat
define <name> notify <Suchmuster> <Anweisung>

Führt eine oder mehrere Anweisungen aus, wenn ein Event generiert wurde, was dem <Suchmuster> (Gerätename oder Gerätename:Event) entspricht. Die Anweisung ist einer der FHEM Befehlstypen. Zum Test dient das trigger-Kommando.

Beispiele:

    define b3lampV1 notify btn3 set lamp $EVENT
    define b3lampV2 notify btn3 { fhem "set lamp $EVENT" }
    define b3lampV3 notify btn3 "/usr/local/bin/setlamp "$EVENT""
    define b3lampV3 notify btn3 set lamp1 $EVENT;;set lamp2 $EVENT
    define wzMessLg notify wz:measured.* "/usr/local/bin/logfht $NAME "$EVENT""
    define LogUndef notify global:UNDEFINED.* "send-me-mail.sh "$EVENT""


Hinweise:

    <Suchmuster> ist entweder der Name des auslösenden ("triggernden") Gerätes oder die Kombination aus Gerät und auslösendem Ereignis (Event) Gerätename:Event.
    Das <Suchmuster> muss exakt (!) entweder dem Gerätenamen entsprechen oder der Zusammenfügung aus Gerätename:Event. Events lassen sich mit "inform" in Telnet oder durch Beobachtung des "Event-Monitors" in FHEMWEB ermitteln.

Aber wie gesagt: ich bin immer froh, wenn ich wieder einen "notify" den ich brauche hinbekommen habe...
...wobei meine (beim schnell drüber fliegen) alle mir Doppelpunkt sind...

Nix für ungut, Joachim
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 13 Oktober 2016, 20:23:13
Kann auch sein das es mit Doppelpunkt sein muss, aber laut seinem Eventlog nicht. Vielleicht hat er auch nur was weg gelassen.
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: MadMax-FHEM am 13 Oktober 2016, 20:33:30
Dann einfach diese Varianten (und vielleicht noch ein paar ;-)  ) ausprobieren...

Ich würde halt erst mal einen Log-Eintrag absetzen und schauen ob das geht, also der Eintrag (halt einen eindeutigen leicht zu findenden/erkennenden wählen) auftaucht, dann ist schon mal gesichert, dass der notify passt...

Und dann mal weiter mit dem Web-Aufruf...

Gruß, Joachim
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 14 Oktober 2016, 13:48:56
Hallo zusammen,

ich habe jetzt mal versucht, nur den Schalter zu loggen, in der Hoffnung, dass der Befehl richtig ist:

define arduinoswitchon notify FS20_55d100:on {/Log(1,"$NAME $EVENT");;}

Da erscheint dann ebenfalls im Log: FS20 arduinobutton on

Viele Grüße und besten Dank

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: MadMax-FHEM am 14 Oktober 2016, 15:35:51
Zitat von: Stargazer am 14 Oktober 2016, 13:48:56
Hallo zusammen,

ich habe jetzt mal versucht, nur den Schalter zu loggen, in der Hoffnung, dass der Befehl richtig ist:

define arduinoswitchon notify FS20_55d100:on {/Log(1,"$NAME $EVENT");;}

Da erscheint dann ebenfalls im Log: FS20 arduinobutton on

Viele Grüße und besten Dank

André

Hallo André,

d.h. du gehst davon aus, dass das dann von dem Notify kommt!?

Um sicher zu gehen logge ich immer (vor $NAME $EVENT) einen "eigenartigen" Text, den ich auf jeden Fall diesem Notify (bzw. Logeintrag) exakt und einfach zuordnen kann.
($NAME, $EVENT logge ich meist nur, wenn ich diese dann auch weiter verwenden will bzw. um bestimmte Dinge zu prüfen)

D.h. jetzt geht es weiter mit dem Web-Aufruf!?

Viel Erfolg, Joachim
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 14 Oktober 2016, 16:00:18
Ob das Notify anspringt sieht man am aktuellen Datum im state
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 14 Oktober 2016, 18:15:02
Soo...

Jetzt kommen wir anscheinend so langsam auf die Spur.
Wenn ich den Schalter auf "on" schalte, ändert sich im state vom Notify nix.

Da ist ja derzeit noch der log-Eintrag von oben drin.

Also ist da irgend etwas faul.

Viele Grüße

André
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: CoolTux am 14 Oktober 2016, 18:23:10
Lese bitte das Einsteiger Handbuch zum Thema Notify. Dein Schaltbefehl ist nicht falsch. Noch nicht ersichtlich falsch. Deine RegEx zum Notify passt nur nicht. Drücke mal den Knopf und beobachte den Eventmonitor
Titel: Antw:Schaltbefehl von FHEM zum Arduino
Beitrag von: Stargazer am 18 Oktober 2016, 21:33:59
Hallo zusammen,

habe es nun am laufen.
Hier mal der Code dazu:

##Arduinoeinbindung zur Laststeuerung

define ArduinoLED dummy
attr ArduinoLED room Lastregelung
attr ArduinoLED webCmd on:off
define ArduinoLEDon notify ArduinoLED:on  { fhem (GetHttpFile("192.168.178.110:80", "/?cmd=set_D5_ON"))}
define ArduinoLEDoff notify ArduinoLED:off { fhem (GetHttpFile("192.168.178.110:80", "/?cmd=set_D5_OFF"))}


Der "fhem"-Befehl hat gefehlt. Ist ja auch irgendwie logisch, oder ?
Manchmal sieht man den Wald vor lauter Bäumen nicht. ich hatte schon einmal so etwas probiert.
Habe mir dann das Einsteiger-pdf nochmal nachgelesen. Da kam mir dann die Idee.

Aber trotzdem noch einmal vielen Dank für alles...

Viele Grüße

André