Hauptmenü

Perl für Anfänger

Begonnen von 87insane, 04 Mai 2019, 12:17:07

Vorheriges Thema - Nächstes Thema

CoolTux

Zitat von: Beta-User am 17 Mai 2019, 14:15:59
Das "fhem ..." weist fhem.pl an, die Befehle auf eine bestimmte Art und Weise zu interpretieren (siehe Zeile 3785 dort). Das gibt es weiter an eine andere Funktion. Die macht dann wieder eine Analyse, und am Ende steht für "set"-Anweisungen?

Genau: CommandSet().

Man spart also den "Umweg".
Beim direkten Aufruf der entsprechenden Funktionen beachte man dabei das dann nur genau einen set Befehl pro Funktionsaufruf hat. FILTER und devspec2array gehen aber weiterhin. Nur die Codeanalyse bleibt aus
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Zitat von: CoolTux am 17 Mai 2019, 14:34:14
Beim direkten Aufruf der entsprechenden Funktionen beachte man dabei das dann nur genau einen set Befehl pro Funktionsaufruf hat. FILTER und devspec2array gehen aber weiterhin. Nur die Codeanalyse bleibt aus
Danke für die Klarstellung :) .

Btw.: AnalyzeCommandChain() wollte ich eigentlich für den Zwischenschritt "sleep" zur Vermeidung des "roten ?"  "aufsparen". Aber vielleicht will ja jemand schon an Teil 2 arbeiten ;D .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Beta-User

Zitat von: 87insane am 17 Mai 2019, 11:53:04
Bitte löse dann noch nicht weiter auf.
Hatte ich zwischendurch mal das Signal übersehen, oder hat sich das erledigt :) ?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Bisher hat wohl keiner weiter gemacht. Hatte Prof. Dr. Peter Henning seinen Perl Teil schon gepostet? (Bzw das Buch).

Ich selber hatte in letzter zeit leider keine zeit für fhem. Aber das wetter wird ja eh nicht besser und somit fällt die arbeit im Garten zum Glück flach [emoji28]

Was ist mit den anderen hier? Keine Lust oder eine Idee?

Gesendet von meinem LG-H850 mit Tapatalk


Beta-User

Zitat von: 87insane am 10 Juni 2019, 12:23:22
Ich selber hatte in letzter zeit leider keine zeit für fhem. Aber das wetter wird ja eh nicht besser und somit fällt die arbeit im Garten zum Glück flach (https://emoji.tapatalk-cdn.com/emoji28.png)

Was ist mit den anderen hier? Keine Lust oder eine Idee?

Ist vermutlich doch schlicht uninteressant... :) oder zu einfach.

Würde mal hier aufsetzen und diese Punkte einschließlich des Ausblicks abarbeiten:
Zitat von: Beta-User am 17 Mai 2019, 11:02:18Damit hätten wir den ersten Punkt auf der Liste erledigt:
Das nächste wäre also, die Zeitdauer optional zu machen, also: kann angegeben werden, muß aber nicht. Wird sie nicht angegeben, soll nach einer Stunde und einer Sekunde abgeschaltet werden.
Ausblick:
- Zu Schritt 3 würde ich noch eine Zwischenstufe einbauen wollen: FHEM-sleep (im Unterschied zu Perl-sleep).
sub
mySwitchOffAfter($;$) {
  my ($ondevice,$duration) = @_;
  #Alternative writing (will modify @_):
  #my $ondevice = shift(@_);
  #my $duration = shift(@_);

  #can also be written as: $duration = "01:00:01" if !defined $duration;
  $duration = "01:00:01" unless defined $duration;
  #further possible notation:  $duration = $duration//"01:00:01";

  #gleichbedeutend mit 'fhem "defmod my_switchoff_$ondevice at +$duration set $ondevice off"'
  #CommandDefMod(undef,"my_switchoff_$ondevice at +$duration set $ondevice off");
 
  #sleep-Variante per fhem-Aufruf (Achtung: Überlebt FHEM-Neustart nicht!):
  my $idname = "my_switchoff_".$ondevice;
  #fhem "sleep $duration $idname quiet;set $ondevice off";
  AnalyzeCommandChain(undef,"sleep $duration $idname quiet;set $ondevice off");
}

Ich hoffe, anhand der obigen Kommentare kann man ganz gut nachvollziehen, wie die einzelnen Schritte aufeinander aufbauen, und auch, wo der Unterschied zwischen dem at und dem sleep liegt.

Laßt mich wissen, ob noch Interesse an dem Thema "erkenne einen laufenden SetExtensions-Timer und mache dann nichts" besteht, ansonsten lasse ich das erst mal auf sich beruhen.

Grüße, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tommy82

Zitat von: Prof. Dr. Peter Henning am 17 Mai 2019, 12:20:25
Hmmm.

Das "Lernen von Perl" und das "Lösen von Perl-Problemen" sind zwei ganz unterschiedliche Dinge.

Ersteres lässt sich mit ein paar Seiten Text und grundlegenden Programmierkenntnissen schnell erledigen. Dafür stelle ich gerne das Perl-Kapitel aus dem "Handbuch Programmiersprachen" (erschienen 2006, ich bin einer der Herausgeber) hier kostenlos zur Verfügung (stammt auch direkt von mir).

Ersteres lässt sich nicht gut erledigen, wenn keinerlei Programmierkenntnisse vorhanden sind. Dafür ist Perl, vorsichtig gesagt, nicht gut geeignet.


Und das zweite, nämlich das Lösen von Perl-Problemen, lässt sich eben nicht generalisieren und mit einer größeren Gruppe gleichzeitig behandeln.

LG

pah

Hallo Pah, würdet du deinen Teil zu Perl noch zurverfügung stellen?

Danke

Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

87insane

Wäre echt super! :)

Gesendet von meinem LG-H850 mit Tapatalk


Prof. Dr. Peter Henning

#37
OK, hier ein Auszug aus dem Handbuch Programmiersprachen. Den Teil über Perl/Tk kann man ignorieren.

LG

pah

rischbiter123

Moin,

vielen Dank.

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

mi.ke

FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Prof. Dr. Peter Henning

#40
Müsste man eigentlich im Kontext lesen - wir haben darin 26 Sprachen in gleicher Weise behandelt, inklusive Zusammenhänge und generelle Programmierhinweise.

Im Handbuch etwas ausführlicher, als im Taschenbuch. Sind beide nicht mehr im Druck erhältlich, leider - und es fehlt auch die Zeit, das alles zu überarbeiten.

Einzelne Teile kann ich elektronisch zur Verfügung stellen, hier z.B. noch Glossar und Einführung.

LG

pah

Tommy82

Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

87insane

Mega dank!

Gesendet von meinem LG-H850 mit Tapatalk


Prof. Dr. Peter Henning

#43
OK, nachdem ich gefragt worden bin: Ich stelle hiermit auch das JavaScript-Kapitel zur Verfügung. Die Einzeldateien lösche ich, es gibt nur noch ein File - mit der allgemeinen Einführung, dann JavaScript, dann Perl, dann das Glossar. Verwendung und Weitergabe nur mit der Titelseite.

LG

pah

Deckoffizier

Vielen Dank für den Lernstoff!!

Gruß
Hans-Jürgen
FHEM 5.8 auf "yakkaroo Emu A1FL.1" mit CUL 868MHz, SIGNALduino,2 1Wire USB Busmaster, diverse 1 Wire Sensoren,Landroid,Aeotec USB Dongle Z-Wave Plus