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
Kommt drauf an was für einen Variablentyp Du zurück gibst.
Am einfachsten
Skalar
return ($a,$b);
ok, danke.
aktuell nur strings
perl Grundlagen, Vorwort zu Kapitel 1 8)
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
{my ($a, $b) = myFunction();}
Gesendet von iPad mit Tapatalk
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.
wer sagt das?
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
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()
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?
$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.
Ja es läuft auf eine Vertiefung Einarbeitung in perl hinaus.....
danke für die Hilfe
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
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
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.
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...
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.
:)
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.