Hauptmenü

eigenes Modul

Begonnen von chris1284, 12 Januar 2014, 13:11:34

Vorheriges Thema - Nächstes Thema

chris1284

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!


ChrisD

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

chris1284

Ok, nun habe ich im Dropdown bei set nur ein "?". Wo / wie kann ich festlegen was in diesem Dropdown-Feld stehen soll?

Puschel74

Hallo,

ich bin mir grad nicht sicher ob das tatsächlich eine Anfängerfrage ist  :o

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

chris1284

Perl-Programmier-Anfänger? ???

ChrisD

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

chris1284

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

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chris1284

#8
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

justme1968

aktuell ist es im wiki hier zu finden: http://www.fhemwiki.de/wiki/Benutzer:StefanStrobel/DevelopmentModuleIntro. ich glaube da steht auch schon was zu readings.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

chris1284

#10
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...