Hallo,
ich habe mir auf Basis des Dummy-Modules ein eigenes Modul gebaut (und auch aus Code anderer ). Das Modul soll (erstmal) einen WindowsPC abbilden.
nach definition
define <name> WINPC <hostname>
hat man dann erstmal einen "nackten" PC, der sieht ertmal so aus wie er soll (siehe Bild).
Ich habe auch ob im Set Bereich ein Dropdown mit "on" und "off" wie gewünscht (ich weiss zwar nicht ganz genau auf welchem stück codes es dort hingelangt^^).
Jedoch: wenn ich set testoc off (über button oder direkt befehl) eingebe bekomm ich die Meldung
ZitatUnknown argument off, choose one of on off
.
Kann mir einer erklären warum? Code ist im Anhang.
Danke!
Hallo,
Die Meldung kommt von der Zeile return "Unknown argument $a[1], choose one of on off";
in der Funktion WINPC_Set. Diese sollte nur ausgegeben werden wenn ein ungültiges Argument angegeben wurde, entweder fügst du ein 'if' hinzu oder kommentierst die Zeile aus.
Grüße,
ChrisD
Ok, nun habe ich im Dropdown bei set nur ein "?". Wo / wie kann ich festlegen was in diesem Dropdown-Feld stehen soll?
Hallo,
ich bin mir grad nicht sicher ob das tatsächlich eine Anfängerfrage ist :o
Grüße
Perl-Programmier-Anfänger? ???
Hallo,
Ersetzereturn "Unknown argument $a[1], choose one of on off";
durchreturn "Unknown argument $a[1], choose one of on off" if($a[1] eq '?');
Grüße,
ChrisD
Und ich wieder. Wie kann ich nachträglich die Internals eines erstellten Gerätes (hier WINPC) ändern?
Wenn ich zum jetzigen Zeitpunkt einen define mache sind nur ein paar Felder vorausgefüllt, ist so gewollt da ich noch nicht alles beim defein auslesen kann. SaveConfig, reboot alles noch da.
Jetzt füge ich über set ein paar Werte hinzu (zb MAC, USER, OPERATINGSYSTEM) und sage SaveConfig ist alles was ich eingefügt habe weg.
Wie kann ich die Werte dauerhaft speichern?
Und noch etwas wie kann ich intervallmäßig Werte im Bereich Internals ändern (ohne AT), so wie zb die Readings sich ändern? Bei mir wäre es aktuell beim STATE interessant. Ich müsste nur die sub "getstate" immer wieder ausführen, aber wie ohne at. Aktueller Code anbei.
Danke und Gruß
Christian
internals werden nicht persistent gespeichert und auch nicht per longpoll im frontend aktualisiert. beides wird nur für readings gemacht.
wenn es dinge sind die der anwender einstellen können soll sind dafür die attribute da. die werden ebenfalls gespeichert.
set ist in dein aller meisten fällen dazu da um nicht im fhem device etwas zu tun sondern im device das gesteuert werden soll etwas zu bewirken.
im in einem modul etwas regelmässig zu tun gibt es InternalTimer.
hast du dir schon mal die developer seiten im wiki angeschaut? und auch das hier: http://forum.fhem.de/index.php/topic,18457.0.html
gruss
andre
Das rtf hat wirklich gut informiert und mir sehr weiter geholfen, Danke für den Link.
Schade das im rtf noch der Punkt fehlt, im Wiki fin ich dazu auch nur allgemeine Hinweise.
ZitatLesen von Geräte und Speichern in Readings
-------------------------------------------------------
muss noch beschrieben werden ...
Ich werd dann mal von vorn anfangen, sauber :-)
Im Wiki selbst hab ich es nicht gefunden. Wenn das nicht mein Fehler war sollte man es dort auch hinterlegen.
Gruß
Christian
aktuell ist es im wiki hier zu finden: http://www.fhemwiki.de/wiki/Benutzer:StefanStrobel/DevelopmentModuleIntro (http://www.fhemwiki.de/wiki/Benutzer:StefanStrobel/DevelopmentModuleIntro). ich glaube da steht auch schon was zu readings.
gruss
andre
Hallo,
ich habe soweit alles (hoffentlich) nach der Vorlage umgeschrieben. Ich habe nun ein Problem:
Ich habe ein Attribut Passwort. Ich möchte dort gerne ein Passowrt mit '#' hinterlegen.
Wie ich eine '#' als zb set-Befehl über das Frontend abgebe weiss ich mittlerweile ja
Beispiel:
Zitat"1234#"
wird mit
"1234".chr(35)
übergeben.
So kann ich es aber nicht als Attribut hinterlegen, ich bekomm es zu mindest nicht hin.
Wie kann ich solche Sonderzeichen händeln?
das Attrib lese ich im Modul mittels
my $pw = AttrVal($name,"admin-pw","");
aus. Eingetragen wird es nur per Frontend.
Und noch etwas: ich definiere ein Gerät, es wird scheinbar angelegt, im Log sehe ich das es WINPC_Define und WINPC_GetUpdate durchläuft aber ich sehe es nicht!
Log:
Zitat
2014.01.13 21:44:54 1: define: 1389645896.46262
EDIT: Das ist gelöst: ein Attribut namens devicetyp scheint zu Problemen zu führen. -> in typ umbenannt.
Neues Problem: nach fhem Restart ist das device nicht mehr da (nat. vorher saveconfig gemacht). Im log steht:
LOG:
Zitat
2014.01.14 07:11:22 1: define: 1389679884.21295
2014.01.14 07:11:22 3: Please define ChristianPc1 first
2014.01.14 07:11:22 1: configfile: 1389679884.21295
Please define ChristianPc1 first
2014.01.14 07:11:22 1: Including ./log/fhem.save
2014.01.14 07:11:22 1: statefile: Please define ChristianPc1 first
Please define ChristianPc1 first
Please define ChristianPc1 first
Ich kann auch keines mehr anlegen ->
LOG
Zitat
2014.01.14 07:15:38 1: define: 1389680140.72024
2014.01.14 07:15:40 3: WINPC: GetUpdate called ...
2014.01.14 07:15:40 3: WINPC: GetUpdate done.
2014.01.14 07:15:46 1: define: 1389680148.27946
2014.01.14 07:15:48 3: WINPC: GetUpdate called ...
2014.01.14 07:15:48 3: WINPC: GetUpdate done.
erst nach einem Pi-Reboot ist danna ohne zutun das Device wieder da...