FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: riker1 am 23 Oktober 2018, 14:31:55

Titel: myUtils und mehrere Rückgabe Variablen
Beitrag von: riker1 am 23 Oktober 2018, 14:31:55
Hi
Hätte eine Frage.-

wie muss ich denn ich denn das return schreiben, wenn ich mehrere Variablen zurückgeben will?

Danke für die Klarstellung

return $a $b?

mit Komma, oder Blank, oder ; ?

Danke T
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 23 Oktober 2018, 14:34:41
Kommt drauf an was für einen Variablentyp Du zurück gibst.
Am einfachsten

Skalar

return ($a,$b);
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: riker1 am 23 Oktober 2018, 14:38:23
ok, danke.

aktuell nur strings
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: betateilchen am 23 Oktober 2018, 14:38:33
perl Grundlagen, Vorwort zu Kapitel 1  8)
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: riker1 am 23 Oktober 2018, 15:17:45
ok, danke,

trotzdem vielleicht noch die Frage...

{myfunction()}
wenn return ($a,$b) in mysub angelegt ist.

wie kann ich sie in fhem dann wieder im notify zuweisen?

hatte dann im Notify:

die variablen a und b wieder zuweisen ?

ist es so korrekt?
($a,$b) = {my_function()}

Muss doch ein perl Lehrgang besuchen.... Danke Trotzdem
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: JoWiemann am 23 Oktober 2018, 15:57:47
{my ($a, $b) = myFunction();}


Gesendet von iPad mit Tapatalk
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 23 Oktober 2018, 16:29:27
Es ist eher untypisch eine Rückgabe eines Funktionsaufrufes in einem Notify weiter zu verarbeiten. Man ruft in einem Notify eine Funktion auf gerade damit das Notify übersichtlich bleibt. Deine komplette Verarbeitung sollte also in der Funktion geschehen inklusive Rückführung in FHEM durch setzen von Readings zum Beispiel oder ausführen von Schaltbefehlen.
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: betateilchen am 23 Oktober 2018, 16:46:44
wer sagt das?
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 23 Oktober 2018, 16:56:23
Zitat von: betateilchen am 23 Oktober 2018, 16:46:44
wer sagt das?

Ich
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: riker1 am 23 Oktober 2018, 17:01:56
Interessant,

daran habe ich gar nicht gedacht.

kann ich dann ein fhem Befehl einfach so eingeben?

fhem("set dummy  ".$a."-".ReadingsTimestamp('Device','reading','default')."")

Mir ist nicht ganz klar welche Variablen ich hier in myutils dann habe?

Danke
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 23 Oktober 2018, 17:09:55
Du hast genau die Variablen welche du an die Funktion übergibst.
Deine Funktion kann natürlich FHEM Funktionen aufrufen. Eine davon wäre auch fhem()
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: riker1 am 23 Oktober 2018, 17:14:19
Ok, danke

kann aber alle Readings mit den normalen Funktionen direkt ansprechen.?
Funktionen wir $hms gehen dann wohl nur wenn ich sie übergebe,
Value()  würde aber gehen?

noch ne kurze Frage

Log 4 habe ich in den Foren gelesen, wo schreibt das denn hin?

Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 23 Oktober 2018, 17:18:06
$hms ist eine Variable keine Funktion.
Log() schreibt ins Standard FHEM Logfile.

Vielleicht solltest Du einfach kurz erklären was genau Du vor hast. Klingt nach mehr und dann solltest Du in der Tat Dich mit Perl beschäftigen.
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: riker1 am 23 Oktober 2018, 19:28:50
Ja es läuft auf eine Vertiefung  Einarbeitung in perl hinaus.....

danke für die Hilfe
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: riker1 am 24 Oktober 2018, 12:11:42
Zitat von: CoolTux am 23 Oktober 2018, 17:18:06
$hms ist eine Variable keine Funktion.
Log() schreibt ins Standard FHEM Logfile.

Vielleicht solltest Du einfach kurz erklären was genau Du vor hast. Klingt nach mehr und dann solltest Du in der Tat Dich mit Perl beschäftigen.

Tja, bin am Auslagern in myutils und da kommen dann immer so Probleme Ideen, wie man etwas allgemeiner und variabler machen kann.

Themen sind dabei dann wechselnd - laufend neue Herausforderungen.....

Themen sind dann immer wieder
- auf welcher Ebene bin ich , Fhem, perl, etc.
- Logging Debugging
- perl immer mehr
- Steuerung über Konfig Dummys
...

Beispielsweise liefert mir :

($R_MAC_STATUS, $R_FB_STATUS )= {checkAllErrorFritzMACpresent("88:BD:45:E0:34:BA")};

in my utils:
return ($Status,$StatusFritz)

als Ergebnis bekomme ich :
$R_MAC_STATUS   -> leer
$R_FB_STATUS  -  > hash wert


hätte hier
$R_MAC_STATUS   -> 0
$R_FB_STATUS  -  > inactive


erwartet.

....perl ruft wohl immer lauter.


-
Danke
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 24 Oktober 2018, 12:16:27
Da ich die Routine checkAllErrorFritzMACpresent() nicht kenne kann ich dazu nichts weiter sagen.
Ein Ansatz wäre aber das der Aufruf Unsinn ist


my ($rMacStatus,$rFbStatus) = checkAllErrorFritzMACpresent("88:BD:45:E0:34:BA");


Skalare beginnen immer klein.
Und die Funktion sollte schon entweder 2 Skalare zurückgeben oder ein Array
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: betateilchen am 24 Oktober 2018, 12:20:37
Zitat von: CoolTux am 23 Oktober 2018, 16:56:23
Ich

Davon wird eine Aussage noch lange nicht richtig  8)

Zitat von: riker1 am 24 Oktober 2018, 12:11:42
laufend neue Herausforderungen.....

Themen sind dann immer wieder
- auf welcher Ebene bin ich , Fhem, perl, etc.

Einfache Regel Nr 1: Alles was Du in der myUtils.pm tust, tust Du in perl. Das ergibt sich schon aus der Dateiendung .pm

Einfache Regel Nr 2: Alles was Du in FHEM devices tust und das in geschweiften Klammern {} steht, ist in den allermeisten Fällen auch perl.
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: betateilchen am 24 Oktober 2018, 12:24:26
Zitat von: CoolTux am 24 Oktober 2018, 12:16:27
Ein Ansatz wäre aber das der Aufruf Unsinn ist
...
Skalare beginnen immer klein.

Dass Skalare immer klein beginnen, ist aber auch Unsinn.

Genau wie die geschweiften Klammern in folgendem Experiment

($R_MAC_STATUS, $R_FB_STATUS )= {checkAllErrorFritzMACpresent("88:BD:45:E0:34:BA")};

denn man ist an dieser Stelle doch bereits auf perl Ebene...
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 24 Oktober 2018, 12:27:12
Zitat von: betateilchen am 24 Oktober 2018, 12:20:37
Davon wird eine Aussage noch lange nicht richtig  8)

Das ist natürlich war, aber je nachdem wie lange derjenige welcher das list mich kennt bekommt sie eine gewisse Gewichtung.
Selbstverständlich kann ich auch falsch liegen, keine Frage. Aber wieso sollte es bei dieser Aussage so sein.
Zitat von: CoolTux am 23 Oktober 2018, 16:29:27
Es ist eher untypisch eine Rückgabe eines Funktionsaufrufes in einem Notify weiter zu verarbeiten. Man ruft in einem Notify eine Funktion auf gerade damit das Notify übersichtlich bleibt. Deine komplette Verarbeitung sollte also in der Funktion geschehen inklusive Rückführung in FHEM durch setzen von Readings zum Beispiel oder ausführen von Schaltbefehlen.

:)
Titel: Antw:myUtils und mehrere Rückgabe Variablen
Beitrag von: CoolTux am 24 Oktober 2018, 12:36:13
Zitat von: betateilchen am 24 Oktober 2018, 12:24:26
Dass Skalare immer klein beginnen, ist aber auch Unsinn.
Perl - best practices : die deutsche Ausgabe ; [Standards für guten Perl-Code] Seite 49 Namenskonventionen
Es geht ja nicht um sollen.