Aus einer Variable ein Value auslesen

Begonnen von spacy, 13 März 2013, 17:33:30

Vorheriges Thema - Nächstes Thema

spacy

Hallo zusammen,

ich habe da ein Problem und hoffe auf Hilfe.

möchte gerne in meine 99_myUtils.pm eine Variable übergeben, das klappt auch.
Nun möchte ich aber eine state dieser Variable auf aktiv prüfen.
Und das ist meine Frage wie komme ich an den state.

Im großen und ganzen geht es darum die Sache nicht Hard zu coden sondern flexibel zu bleibe.
Das ganze dient dazu meine Aussenrollos im Haus zu steuern.
Das ganze soll über das Webfrontend aktiv/deaktiv sein.

Das ganze sieht in etwa so aus

my ($device, $rolloaktiv) = @;


und das $rolloaktiv möchte ich nun auf aktiv/deaktiv prüfen.

Und dann noch eine andere Frage.

kann mann zwei FS20 Device's zu einem zusammenfügen.
Macht man so was über ein dummy..

Danke euch

der spacy

Puschel74

Hallo,

in der 99_MyUtils.pm mach ich zwar nicht viel (noch nicht) aber ich denke mal das müsste gleich klappen wie sonst auch.

Entweder ReadingsVal oder Value.
Ich nehme mal an dieser aktiv/deaktiv ist in FHEM als Device angelegt?
Dann müsste du mit einem

my $aktiv=Value("<device_für_aktiv/deaktiv>","state","deaktiv")

den Status des Device auslesen können.
state kann auch State sein.

Wie meinst du
Zitatzwei FS20 Device's zu einem zusammenfügen
Sollen beide zugleich ein- und ausschalten?
Dann kannst du das mit structure lösen.

Grüße

P.S.: Ich hoffe ich hab jetzt nicht zu viel Blödsinn geschrieben
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.

spacy

so sieht das bei mir aus.

my $true_aktivRollo = ReadingsVal($aktivRollo , "state" , "deaktiv");
Log 3, "doSunset: Prüfe Automatikbedarf für $device...";
                if ( Value($true_aktivRollo) eq "aktiv" && .....

Ob ich Value oder ReadingsVal nehme ist egal.
Der Vergleich auf aktiv ist immer true egal wie ich es mache.
 

Warum reicht das nicht aus?

if (Value($aktivRollo) eq "aktiv")

Reinerlein

Hi,

der Unterschied ist, das Value nur den aktuellen STATE ausliest und zurückgibt, und mit "ReadingsVal" kannst du ein beliebiges Reading auslesen.
Wenn das Modul normal programmiert wurde, dann gilt: Value("DeviceName") eq ReadingsVal("DeviceName", "state", "") Der Inhalt des letzten Parameters von ReadingsVal wird geliefert, wenn das Reading nicht existiert.

Warum das bei dir immer zu true evaluiert, kann ich dir auch nicht sagen, was zeigt denn die Oberläche an?
Zum Testen kannst du auch in die Eingabebox auf der Weboberfläche folgendes eingeben:{Value("DeviceName")} und dir anschauen, was da zurückkommt.

Grüße Reinerlein