FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: noice am 29 Dezember 2013, 13:01:16

Titel: Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 13:01:16
Hallo Leute,

ich versuche seit Stunden verzweifelt einen Arduino mit www.homecontrol4.me Sketch drauf über Fhem zum laufen zu bringen.
der Arduino läuft an sich perfekt.

nun habe ich folgendes in die Config eingetragen:

define WZ_Licht notify on:off "wget -q --user=admin --password=admin  'http://192.168.0.91/rawCmd?schalte&16'"
attr WZ_Licht room testraum
attr WZ_Licht webCmd on:off

leider bekomme ich nur folgende Fehlermeldung:

No set implemented for WZ_Licht

da ich wenig Ahnung vom Programmieren habe komme ich nicht weiter.

Hat wer eine Ahnung?
Titel: Antw:Homecontrol4me
Beitrag von: Puschel74 am 29 Dezember 2013, 13:07:02
Hallo,

versuch mal

define n_WZ_Licht notify WZ_Licht:(on|off) ...

Das Notify darf nicht gleich heissen wie das WZ_Licht (so es dann bereits gibt) und das Regexp besteht aus <Device:Befehl>.
In diesem Fall wird ein notify mit Namen n_WZ_Licht angelegt das auf das Device WZ_Licht reagiert wenn dieses on oder off sendet.

Ob der Rest des notify so passt kann ich dir nicht sagen.

Grüße

Edith:
Zitatattr WZ_Licht webCmd on:off
Grad gesehen. Ein notify kann als attribut kein webCmd.
Du wirst dir wohl erst ein Device WZ_Licht erstellen müssen und diesem das attr webCmd geben und dann im notify auf dieses Device reagieren.
Sonst müsste sich das notify ja selbst aufrufen  ;D
Titel: Antw:Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 13:19:22
Bahnhof  :)

hmm da hört es eben wieder auf bei mir. Device erstellen?
Titel: Antw:Homecontrol4me
Beitrag von: Puschel74 am 29 Dezember 2013, 13:26:26
Hallo,

ein notify reagiert auf etwas.
Das kann ein Lichtschalter sein - eine Temperatur oder Luftfeuchte oder Regenmenge oder Windgeschwindigkeit oder oder ...

Du musst dem notify nur sagen worauf es reagieren soll.
Du kannst dem notify aber kein attr webCmd geben.
Das kansst du nur bei einem Device machen.

Wenn du also deinen code per notify abschicken willst an den Arduino musst du dem Notify sagen worauf es reagieren soll um den Rest abzuarbeiten.

du kannst dir nun also einen dummy erstellen
Define WZ_Licht dummy
und diesem das attr webCmd geben
attr WZ_Licht webCmd on:off
und nun das notify erstellen.
Sobald du nun bei deinem Dummy auf on oder off klickst wird das notify aufgerufen (sollte es zumindest - es sei den ich hab mal wieder einen Fehler gemacht) und entweder das wget abgeschickt werden oder zumindest eine Fehlermeldung im Logfile auftauchen.

Grüße
P.S.: Ich trau mich schon fast nichtmehr auf das Einsteiger.pdf und die commandref zu verweisen.
Titel: Antw:Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 13:37:51
hab jetzt mal ein dummy erstellt. ich hab auch die PDF gelesen nur nicht kapiert :-) ich bin in Sachen Verständnis nicht dumm nur ich blick nicht durch das ist mein Problem. sobald ich die hintergründe verstehe ist es für mich leichter ..


define WZ_Licht dummy
define n_WZ_Licht notify on:off "wget -q --user=admin --password=admin  'http://192.168.0.91/rawCmd?schalte&16'"
attr WZ_Licht room testraum
attr WZ_Licht webCmd on:off

aber jetzt denk ich hab ich das Problem das ich ja dem attr ja noch den link geben muss oder?

Danke schon mal für deine sehr gute hilfe  :-*
Titel: Antw:Homecontrol4me
Beitrag von: Puschel74 am 29 Dezember 2013, 13:51:33
Hallo,

Zitatdefine n_WZ_Licht notify on:off

Das notify bräuchtest du nur richtig kopieren und den Rest anhängen.

Zitatdefine n_WZ_Licht notify WZ_Licht:(on|off) ...

Grüße
Titel: Antw:Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 13:58:32
Super der button ist schon mal da.
nur reagiert meine Steuerung nicht. Im logfile ist aber nichts zu finden. >:(
Titel: Antw:Homecontrol4me
Beitrag von: Puschel74 am 29 Dezember 2013, 14:00:55
Hallo,

Zitatnur reagiert meine Steuerung nicht.

Da wir nicht wissen (können) wie du was genau eingetragen hast wäre bei solchen Aussagen ein kurzer Post deines codes evtl. hilfreicher  ;)

Grüße
Titel: Antw:Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 14:02:28
ups sorry.  ::)

##############################
#     Wohnzimmer Licht       #
##############################
define WZ_Licht dummy
attr WZ_Licht room testraum
attr WZ_Licht webCmd on:off
define n_WZ_Licht notify WZ_Licht:(on|off) "wget -qO --user=admin --password=admin  'http://192.168.0.91/rawCmd?schalte&16'"
attr n_WZ_Licht room testraum
Titel: Antw:Homecontrol4me
Beitrag von: Puschel74 am 29 Dezember 2013, 14:42:49
Hallo,

also das notify leicht abgewandelt funktioniert einwandfrei bei mir:

define n_Test notify Test:(An|Aus) {
Log(3,"$NAME $EVENT");
}

mit einem Dummy namens Test und webCmd An:Aus
liefert mir nach Klick auf An und Aus beim Dummy im Log:
Zitat2013.12.29 14:34:15 3: Test An
2013.12.29 14:34:33 3: Test Aus

Nun kann es ja nur noch an deinem wget-Aufruf liegen das nichts passiert.

Grüße
Titel: Antw:Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 16:02:22

ich glaub da liegt der Hund begraben... irgendwas stimmt mit dem User und Passwort nicht.

so über CMD habe ich es nun hin bekommen zu schalten und zwar über:
wget -q "http://admin:admin@192.168.0.91/rawCmd?schalte&16"

wenn ich das aber in die cfg eingebe passiert nichts. kann man das irgenwie umsetzten?

mein versuch:
##############################
#     Wohnzimmer Licht       #
##############################
define WZ_Licht dummy
attr WZ_Licht room testraum
attr WZ_Licht webCmd on:off
define n_WZ_Licht notify WZ_Licht:(on|off) wget -q "http://admin:admin@192.168.0.91/rawCmd?schalte&16"
attr n_WZ_Licht room Testraum

Funktioniert nicht.  :(
Titel: Antw:Homecontrol4me
Beitrag von: Christoph am 29 Dezember 2013, 16:28:17
So müsste es gehen  ;)

define n_WZ_Licht notify WZ_Licht:(on|off) "wget -q 'http://admin:admin@192.168.0.91/rawCmd?schalte&16'"
Titel: Antw:Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 16:39:54
Danke für die schnelle Antwort.
Leider ohne Erfolg. :-\
Titel: Antw:Homecontrol4me
Beitrag von: KaiK am 29 Dezember 2013, 17:23:22
Warum nutzt du auf dem Arduino nicht Firmata?
Kommt mir deutlich cleaner implementiert vor...
Titel: Antw:Homecontrol4me
Beitrag von: Rohan am 29 Dezember 2013, 20:25:33
Hi,

Zitat von: noice am 29 Dezember 2013, 16:39:54
... Leider ohne Erfolg. :-\

Und wie sieht es mit Fehlermeldungen in der Fhem.log aus??

Du müsstest schon mal (im übertragenen Sinn) links und rechts schauen. Fhem schreibt dir... du musst es nur lesen ;)

Danke und Gruß
Thomas
Titel: Antw:Homecontrol4me
Beitrag von: noice am 29 Dezember 2013, 22:48:29
ich bin bereits mit nem bekannten an einer lösung im 99_myutils

warum ich Homcontrol4me sketch benutze? weil ich eine frau hab die doch gern noch die app benutzen möchte :)

so der erste versuch geht schon mal:

define Licht_wz dummy
attr Licht_wz room testraum
attr Licht_wz webCmd toggle
define n_Licht_wz notify Licht_wz:toggle {myLichtToggleNr('16')}
attr n_Licht_wz room testraum


und das muss ins 99_myutils.pm
sub myLichtToggleNr {
   my $par=$_[0];
   my $sCmd="wget.exe ".'"'."http://admin:admin".'@'."192.168.0.91/rawCmd?schalte&".$par.'"';
   log 1, "Versuch ".$sCmd;
   system ($sCmd);

}


jetzt fehlt mir nur noch die Auswertung von dem momentanen Status da man ja auch extern schalten kann
Auslesen des Status geht wie folgt:
sub myLichtStatusNr {
   my $par=$_[0];
   my $sCmd="wget.exe ".'"'."http://admin:admin".'@'."192.168.0.91/rawCmd?status&".$par.'" -O Status.txt';
   log 1, "Versuch ".$sCmd;
   system ($sCmd);

}


da ist nur noch die frage wie binde ich das ein?!? muss ich dazu die Status.txt auslesen?
Titel: Antw:Homecontrol4me
Beitrag von: noice am 05 Januar 2014, 23:40:39
So.
nun hab ich doch den Arduino Sketch umgekrempelt um nicht nur togglen zu können sondern auch direkt ein und auszuschalten.
Bei Interesse wird ich gern den Sketch sowie die Zeilen im My_Utils zur Verfügung stellen.

ein Problem bleibt weiterhin noch.  :-\
ich kann mit:
sub myLichtStatusNr {
   my $par=$_[0];
   my $sCmd="wget.exe ".'"'."http://admin:admin".'@'."192.168.0.91/rawCmd?status&".$par.'" -O Status.txt';
   log 1, "Versuch ".$sCmd;
   system ($sCmd);

}

den Status asulesen.
Bei Ein kommt: <schalter>:1
Bei aus kommt: <schalter>:0

wie kann ich jetzt in Fhem den Status anzeigen lassen?