Autor Thema: neues Modul Astro.pm  (Gelesen 12251 mal)

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4914
neues Modul Astro.pm
« am: 05 Juli 2017, 21:39:21 »
Für mein in Arbeit befindliches Hausautomatisierungsmodul habe ich etwas mehr Daten über Sonne und Mond benötigt.
Ich habe mir daher erlaubt, die Routinen von dieser Seite hier: http://lexikon.astronomie.info/java/sunmoon/ von ein paar kleineren Fehlern zu befreien und nach Perl zu migrieren.

Resultat ist das angehängte Modul. Dazu sollten für den eigenen Standort die globalen Attribute
(Edit: Modul ist eingecheckt und wird per Update verteilt)

attr global longitude <wert>
attr global latitude <wert>
attr global altitude <wert>

gesetzt werden. Mit
define IRGENDEINNAME Astrowird dann ein Astro-Device angelegt, dessen Readings periodisch upgedated werden (default 1 Stunde), das aber auch mit Parametern aufgerufen werden kann.

Der Nutzen liegt z.B. darin, dass man sich für einen Tag in der Zukunft den Sonnenaufgang anzeigen lassen kann.

LG

pah
« Letzte Änderung: 07 Juli 2017, 10:07:51 von Prof. Dr. Peter Henning »
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13672
  • Das "S" in "IoT" steht für "Security"
Antw:neues Modul AstroUtils.pm
« Antwort #1 am: 05 Juli 2017, 22:36:18 »
Falls es erlaubt ist, ohne dass mir wieder irgendeine Geflügelverschlepperei nach Südosteuropa vorgeworfen wird, hier (m)ein Tipp zum einfachen automatischen Laden des Moduls in FHEM:

  • die Moduldatei habe ich umbenannt in AstroUtils.pm (ohne Zahl davor)
  • am Anfang meiner 99_myUtils.pm habe ich ein "require AstroUtils;" eingefügt

Da die 99_myUtils.pm beim FHEM-Start vor allen anderen Moduldateien geladen wird, ist somit sichergestellt, dass die Funktionen aus dem Modul sehr frühzeitig verfügbar sind und es keine Probleme gibt, falls irgendein Device darauf zugreifen möchte.

-----------------------
Nächster Hamburg-Stammtisch: 15.12.2017
Gefällt mir Gefällt mir x 1 Informativ Informativ x 1 Liste anzeigen

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4914
Antw:neues Modul AstroUtils.pm
« Antwort #2 am: 06 Juli 2017, 06:33:14 »
Udo, ich baue noch ziemlich viel an diesen Dingen herum - eventuell wird daraus sogar ein Astro"-Device.

LG

pah

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13672
  • Das "S" in "IoT" steht für "Security"
Antw:neues Modul AstroUtils.pm
« Antwort #3 am: 06 Juli 2017, 15:36:53 »
Wenn das mein Modul wäre, würde ich die Werte einfach als JSON zurückliefern, fhem.pl stellt dazu seit einiger Zeit eine eigene Funktion toJSON() bereit, mit der man beliebige Datentypen (scalar, array, hash) auf simpelste Weise in json konvertieren kann.

eventuell wird daraus sogar ein Astro"-Device.

Dann hättest Du aber immer noch das "Reihenfolge-Problem" beim Start von FHEM, sofern andere devices auf readings dieses Astro-devices zugreifen wollen, bevor es definiert ist.
« Letzte Änderung: 08 Juli 2017, 14:07:29 von betateilchen »
-----------------------
Nächster Hamburg-Stammtisch: 15.12.2017

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4914
Antw:neues Modul AstroUtils.pm
« Antwort #4 am: 06 Juli 2017, 16:51:07 »
Wieso ich ?

LG

pah
« Letzte Änderung: 06 Juli 2017, 17:50:20 von Prof. Dr. Peter Henning »

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13672
  • Das "S" in "IoT" steht für "Security"
Antw:neues Modul Astro.pm
« Antwort #5 am: 06 Juli 2017, 17:55:54 »
Weil Du als Maintainer eines solchen zukünftig vielleicht existierenden Moduls den Anwendern das Verhalten im "Fehlerfall" erklären müsstest  :P
-----------------------
Nächster Hamburg-Stammtisch: 15.12.2017

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16994
Antw:neues Modul Astro.pm
« Antwort #6 am: 06 Juli 2017, 22:33:28 »
es gibt irgendwo einen thread bei dem es um die abhäbgigkeit von devices untereinander ging und die probleme die es beim start machen kann.

diese probleme kann man vermeiden in dem man nicht in der DefineFn versucht aufs andere device zuzugreifen sondern erst verzögert nach dem fhem komplett läuft. die verzögerungen bekommt man entweder durch eine NotifyFn auf global:INITIALIZED oder durch einen InternalTimer mit verzögerung 0.

d.h. es ist aufgabe des benutzenden moduls und nicht des bereitstellenden moduls das 'richtig' zu machen.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4914
Antw:neues Modul Astro.pm
« Antwort #7 am: 07 Juli 2017, 09:13:53 »
@betateilchen: "Müsste", soso. Wie gesagt:
Zitat
Wurks. :'(
Sehe ich nicht so.

@justme1968: Das geht noch viel einfacher. Selbstrverständlich kann man in jedem eigenen Modul auch ein
require "95_Astro.pm";an den Anfang setzen. Und sogar ohne Definition eines Astro-Devices auf die somit bekannten Routinen zugreifen. Etwa per
Astro_Get( IRGENDEINE HASH REFERENZ,"dummy","text", "SunRise","2019-12-24");um den Sonnenaufgang an Heiligabend 2019 zu bekommen.

LG

pah
« Letzte Änderung: 07 Juli 2017, 09:16:07 von Prof. Dr. Peter Henning »

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16994
Antw:neues Modul Astro.pm
« Antwort #8 am: 07 Juli 2017, 09:17:43 »
das oben bezog sich auf den zugriff auf readings.

klar geht der aufruf einer routine auch direkt. jedenfalls so lange das andere modul damit klar kommt das es eventuell noch kein eigenes device und irgendwelche initialisierungen noch nicht gelaufen sind die z.b. eigene attribute benötigen.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13672
  • Das "S" in "IoT" steht für "Security"
Antw:neues Modul Astro.pm
« Antwort #9 am: 07 Juli 2017, 09:32:40 »
@justme1968: Das geht noch viel einfacher. Selbstrverständlich kann man in jedem eigenen Modul auch ein
require "95_Astro.pm";an den Anfang setzen. Und sogar ohne Definition eines Astro-Devices auf die somit bekannten Routinen zugreifen. Etwa per
um den Sonnenaufgang an Heiligabend 2019 zu bekommen.

Das ist doch genau das,

was ich in meinem Beitrag https://forum.fhem.de/index.php/topic,73951.msg656393.html#msg656393

vorgeschlagen habe? Wenn man das require in die 99_myUtils.pm packt,

  • muss man das nur einmal tun
  • KANN das auch jeder Anwender tun, weil es "seine" Datei ist
  • hat man die Funktionen aus einem so geladenen Modul zum frühestmöglichen Zeitpunkt zur Verfügung und muss sich über Reihenfolgen keine Gedanken mehr machen. Warum nicht einfach die Mechanismen nutzen, die FHEM bereits bietet?
-----------------------
Nächster Hamburg-Stammtisch: 15.12.2017

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4914
Antw:neues Modul Astro.pm
« Antwort #10 am: 07 Juli 2017, 10:09:30 »
Leute, worüber diskutieren wir hier eigentlich ?

Udo wollte mir ausreden, daraus ein Device zu machen. Wollte ich aber. Ich habe gepostet, dass man _seinen_ Vorschlag auch mit einem Device-Modul umsetzen kann.

Also herrscht doch Mir, Druschba, Blini.

LG

pah
Informativ Informativ x 1 Liste anzeigen

Offline Morgennebel

  • Sr. Member
  • ****
  • Beiträge: 825
  • Proud systemd-free zone
Antw:neues Modul Astro.pm
« Antwort #11 am: 07 Juli 2017, 10:55:17 »
Also herrscht doch Mir, Druschba, Blini.

Klär mich auf, bitte...

Ciao, -MN
FHEM: LattePanda x86 4/64GB+ RPi A mit RPI3 für 1-Wire mit www.devuan.org Linux
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT, vThings, Homematic, PiAware ADS-B, Luftsensor.info, ESP8266
Informativ Informativ x 1 Liste anzeigen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 12074
Antw:neues Modul Astro.pm
« Antwort #12 am: 07 Juli 2017, 11:01:18 »
Zitat
Hi KugelblitzIn, sollte Tevje der MiLchmann die Milch der frommen Denkungsart hier ausgegossen haben ? Dann würden ja Mir, Druschba, Blini herrschen und alle Kratzbäume wären mehr als flüssig... ;-) Und wo bleibt unser geliebter Zoo aus den diversen (Un) Tierchen ?
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
Informativ Informativ x 1 Liste anzeigen

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16994
Antw:neues Modul Astro.pm
« Antwort #13 am: 07 Juli 2017, 11:13:04 »
zum eigentlichen thema:

wie wäre es pro device den globalen standort mit instanz attributen überschreiben zu können um sich ein device mit den readings für einen anderen ort anzulegen?

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4914
Antw:neues Modul Astro.pm
« Antwort #14 am: 07 Juli 2017, 13:00:21 »
André: Gute Idee. Ich schau mal auf mein Zeitbudget.

Morgennebel: Friede, Freundschaft, Eierkuchen (nicht ganz, aber die sind dort unbekannt).

LG

pah
Gefällt mir Gefällt mir x 1 Liste anzeigen

 

decade-submarginal