Neues Modul für Gartenbewässerung von Hunter

Begonnen von xasher, 06 April 2020, 12:40:54

Vorheriges Thema - Nächstes Thema

xasher

Hallo zusammen,

ich würde gerne mich miteinbringen und habe ein Modul erstellt für die Gartenbewässerung von Hunter Hydrawise.
Ich habe ein paar Mal mit Rudolf Kontakt gehabt. Er sagte mir, dass es gewisse Voraussetzung benötigt für eine Veröffentlichung in FHEM.

Demnach sollte u.a. ein erfahrener Programmierer mal über das Modul schauen um so die gröbsten Fehler anzumerken. Das halte ich auch für sinnvoll und würde gerne jmd. Erfahrenes bitten, sich das Modul anzuschauen:

https://forum.fhem.de/index.php?topic=88589.0 (Antwort 21)

Besten Dank und viele Grüße,
Alex

RichardCZ

Mal so das Gröbste durch

$ perlcritic 70_HYDRAWISE.pm
70_HYDRAWISE.pm source OK


Man kann natürlich noch ein wenig weitermachen falls Interesse da ist.
Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

CoolTux

Hallo Alex,

Ich habe Dein Modul gerade bei mir installiert. Habe keinen Zugang oder so aber ein einfaches Define klappt.
Da wir gerade eine kleine Diskussion haben in welche Richtung zukünftig Module bezüglich DeveloperGuid entwickelt werden sollen würde ich da kurz noch mal Rudi fragen wie weit ich da gehen darf.
Ansonsten fehlt Dir natürlich noch die Doku im Modul. Also Commandref.
Den Token würde ich nicht in der Define mit ablegen sondern gesondert als set Befehl ins keyFile ablegen.
https://wiki.fhem.de/wiki/DevelopmentModuleAPI#setKeyValue
https://wiki.fhem.de/wiki/DevelopmentModuleAPI#getKeyValue



Grüße
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

CoolTux

Richard hat da ja nun schon ganz schön was gemacht.
Dazu etwas zu den Hintergründen. Einige Entwickler möchten versuchen etwas Perlkonformer zu entwickeln. So versuchen diese Entwickler sich an "Perl Best Practices" zu halten (Buch) und mit Tools zu schauen wie sauber der Code ist.
So zum Beispiel Perlcritic. Für eine saubere Formatierung kann man noch perltidy verwenden.

Desweiteren versuchen wir alle Module auf packages zu bringen (A package is a collection of code which lives in its own namespace).


Grüße
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

RichardCZ

Zitat von: CoolTux am 06 April 2020, 13:27:20
Richard hat da ja nun schon ganz schön was gemacht.

Ich würde noch magische Variablennamen entfernen (@a), nicht Variablennamen verwenden, die gleich lauten wie builtins ($return)
und ich glaube, man kann mit Heredocs den Code auch visuell sehr beruhigen:


use strict;
use warnings;



print anleitung();

print "\n";

print bessere_anleitung();

sub anleitung {
return "
         -----------------------------------------------------------------------------------------------------\n
         |renewcontext | refresh readings customerdetail                                                     |\n
         -----------------------------------------------------------------------------------------------------\n
         |renewRelays  | refresh readings statusdetails                                                      |\n
         -----------------------------------------------------------------------------------------------------\n
         |run          | Run zone for a period of time. 2 Parameters: \"relay_id\" \"time_in_seconds\"           |\n
         -----------------------------------------------------------------------------------------------------\n
         |runall       | Run all zones for a period of time. 1 Parameters: \"time_in_seconds\"                 |\n
         -----------------------------------------------------------------------------------------------------\n
         |stop         | Stop zone. 1 Parameters: \"relay_id\"                                                 |\n
         -----------------------------------------------------------------------------------------------------\n
         |stopall      | Stop all currently running zones.                                                   |\n
         -----------------------------------------------------------------------------------------------------\n
         |suspend      | Suspend zone for a period of time. 3 Parameters: \"relay_id\" \"DD.MM.YYYY\" \"HH24:MI\"  |\n
         -----------------------------------------------------------------------------------------------------\n
         |suspendall   | Suspend all zones for a period of time. 2 Parameters: \"DD.MM.YYYY\" \"HH24:MI\"        |\n
         -----------------------------------------------------------------------------------------------------\n
         ";

}

sub bessere_anleitung {
    return << 'EOT';
-----------------------------------------------------------------------------------------------------
|renewcontext | refresh readings customerdetail                                                     |
-----------------------------------------------------------------------------------------------------
|renewRelays  | refresh readings statusdetails                                                      |
-----------------------------------------------------------------------------------------------------
|run          | Run zone for a period of time. 2 Parameters: "relay_id" "time_in_seconds"           |
-----------------------------------------------------------------------------------------------------
|runall       | Run all zones for a period of time. 1 Parameters: "time_in_seconds"                 |
-----------------------------------------------------------------------------------------------------
|stop         | Stop zone. 1 Parameters: "relay_id"                                                 |
-----------------------------------------------------------------------------------------------------
|stopall      | Stop all currently running zones.                                                   |
-----------------------------------------------------------------------------------------------------
|suspend      | Suspend zone for a period of time. 3 Parameters: "relay_id" "DD.MM.YYYY" "HH24:MI"  |
-----------------------------------------------------------------------------------------------------
|suspendall   | Suspend all zones for a period of time. 2 Parameters: "DD.MM.YYYY" "HH24:MI"        |
-----------------------------------------------------------------------------------------------------
EOT
}



Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

CoolTux

Richard bitte nicht ganz so schnell. Denk bitte daran die meisten hier sind keine Profis in Perl.
Wenn Du Vorschläge machst dann bitte mit etwas Erklärung dazu oder Verweise auf Literatur.  ;)
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

CoolTux

@Alex

Um es noch mal ganz klar zu sagen. Bis auf die Commandref ist alles andere ein Vorschlag, keine Verpflichtung. Es zwingt Dich also niemand mehr Energie rein zu stecken.

Im Zuge einer sauberen FHEM Umgebung wäre es natürlich schön wenn Du Dir die Vorschläge anschauen könntest.


Grüße
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

xasher

Hallo zusammen,

vielen Dank für die Hinweise. Ja, ich brauch da vielleicht etwas länger und bin bemüht, das auch richtig zu machen. Das mit der Anleitung gefällt mir ganz gut. Die CommandRef ergänze ich noch. Dann will ich mich gerne weiterentwickeln. Ich stell diese Änderungen noch ein, dann kannst du gerne noch ein Blick draufwerfen.

Viele Dank auf jeden Fall,
Gruß,
Alex

xasher

Hallo zusammen,

ich habe jetzt die Anleitung von Richard übernommen und habe das Commdref von dir CoolTux eingebaut.
Vielleicht hast du nochmals Zeit, dir das anzuschauen?

Besten Dank und viele Grüße,
Alex

RichardCZ

Ich konnte es jetzt nicht funktional testen, aber vom Code her sieht das passabel aus.

$ perlcritic -4 70_HYDRAWISE.pm
70_HYDRAWISE.pm source OK


Habe 2-3 Schönheitsfehler behoben - muss sich jetzt nicht verstecken der Code.

Witty House Infrastructure Processor (WHIP) is a modern and
comprehensive full-stack smart home framework for the 21st century.

CoolTux

Zitat von: xasher am 06 April 2020, 17:22:23
Hallo zusammen,

ich habe jetzt die Anleitung von Richard übernommen und habe das Commdref von dir CoolTux eingebaut.
Vielleicht hast du nochmals Zeit, dir das anzuschauen?

Besten Dank und viele Grüße,
Alex

Zitat*** EN FHEM/70_HYDRAWISE.pm: No a-tag with name="HYDRAWISE"
*** EN FHEM/70_HYDRAWISE.pm: Unbalanced ul (1, last line ok: 805)
*** EN FHEM/70_HYDRAWISE.pm: Unbalanced tr (1, last line ok: 859)

*** DE FHEM/70_HYDRAWISE.pm: Unbalanced ul (1, last line ok: 915)
*** DE FHEM/70_HYDRAWISE.pm: Unbalanced tr (1, last line ok: 968)

Das müsstest Du bitte noch in Ordnung bringen.

Testen kannst Du mit

cd /opt/fhem
/usr/bin/perl contrib/commandref_join.pl


Da sollten dann zu Deinem Modul keine Meldungen kommen.
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

rudolfkoenig

Oder falls man weniger geduldig ist:
contrib/commandref_join.pl FHEM/mymodule.pm

xasher

Danke euch. Ich kümmere mich morgen gleich drum.
Heute Abend hat die Frau Vorrang.
Ich denke, es liegt an den Umlauten vielleicht. Ich dachte, das funktioniert mit UTF8.

Vielleicht ist es auch was anderes - wir werden sehen.

Viele Grüße,
Alle

CoolTux

Zitat von: xasher am 06 April 2020, 19:40:16
Danke euch. Ich kümmere mich morgen gleich drum.
Heute Abend hat die Frau Vorrang.
Ich denke, es liegt an den Umlauten vielleicht. Ich dachte, das funktioniert mit UTF8.

Vielleicht ist es auch was anderes - wir werden sehen.

Viele Grüße,
Alle

Die Umlaute sind es nicht. Du hast zu viel ul und tr offen. Also sie nicht mehr geschlossen.

<ul>
  <ul>
</ul>

Sowas zum Beispiel
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

xasher

Ah ja. Danke. Das ist einfach  :)

Schönen Abend allen
Alex