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

xasher

Hallo zusammen,

ich bin das html durchgegangen und habe 3 Fehler noch korrigiert pro Hilfeseite.

Das kommt nun bei mir
pi@raspberrypi:/opt/fhem $ /usr/bin/perl contrib/commandref_join.pl ./FHEM/70_HYDRAWISE.pm
pi@raspberrypi:/opt/fhem $


Ich bitte nochmals um eine kurze Bestätigung. Dann würde ich nochmals auf Rudolf zugehen.

Besten Dank,
Alex

CoolTux

Sieht soweit gut aus. Kommentiere bitte noch "use Data::Dumper;" aus. Das muss beim User ja nicht unbedingt geladen werden.

Was genau wolltest Du Rudi da noch fragen? Eventuell kann ich Dir da auch helfen?



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 CoolTux,

bestimmt kannst du mir sogar helfen. Ich hatte nur über die Vorgehensweise berits mit ihm Kontakt.

Was mich jetzt interessieren würde:
Was muss ich jetzt machen, um das Modul einzuchecken. Ich habe bereits einen Public Key generiert und an die entsprechende Mailadresse geschickt.
Dann weiß ich aber aktuell nicht weiter.

Anbei das Modul mit der Auskommentierung.

Grüße,
Alex

CoolTux

Du müsstest dann Bescheid bekommen wenn Dein Zugang eingerichtet ist.
Dann clonst Du ertsmal das svn  und richtest alles ein.
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,

ok, etwas peinlich - ich arbeite zum ersten Mal mit subversion. Ich habe auch die Schritte von svn.fhem.de durchgeführt.

Ich habe also ein clone hier lokal:
pi@raspberrypi:~ $ svn co svn+ssh://svn.fhem.de/trunk/fhem /fhem_svn/
Enter passphrase for key '/home/pi/.ssh/xasher.ppk': --> <pw_eingegeben_dann_lädt_er_dateien>
...
Ausgecheckt, Revision 21615.


Prima, das sieht nicht schlecht aus. Dann habe ich verstanden, dass ich die MAINTAINER.txt und ggf. CHANGED anpassen bzw. ergänzen darf.

Dann aber: Wie kommt mein Modul rein? (ok, ich könnte es nach /fhem_svn/FHEM kopieren)
und wie wird das dann eingecheckt?

Vielleicht kann mir jmd Starthilfe geben.

Danke euch,
Alex

CoolTux

Du kopiert tatsächlich Dein Modul ins SVN Verzeichnis unter /FHEM

Dann sagst Du svn das es dazu kommt.
svn add

Hier mal eine ältere Anleitung
http://svnbook.red-bean.com/de/1.7/index.html

Schau Dir auch noch das Thema id an.
https://wiki.fhem.de/wiki/SVN_Nutzungsregeln#SVN_.24Id.24_Platzhalter


Nutzungsregeln zu svn in Verbindung mit FHEM findest Du hier
https://wiki.fhem.de/wiki/SVN_Nutzungsregeln
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 CoolTux,

danke, die Seiten kenne ich - bis auf das Gesamtwerk von subversion vielleicht.

svn add
svn status
A       70_HYDRAWISE.pm
svn propset svn:keywords Id 70_HYDRAWISE.pm
svn diff
Property changes on: 70_HYDRAWISE.pm
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
svn commit 70_HYDRAWISE.pm:controlling Hydraswise irrigation
svn: E200009: Übertragen schlug fehl (Details folgen):
svn: E200009: »/fhem_svn/FHEM/70_HYDRAWISE.pm:controlling« ist nicht unter Versionskontrolle


Ich verstehe es nicht, warum es nicht in der Versionskontrolle ist, wenn es doch den Stauts "A" hat.

Sorry,
alex

CoolTux

#22
svn add FHEM/70_HYDRAWISE.pm

Mach mal bitte noch mal

Generell solltest Du bitte versuchen dem svn Befehl immer nur die Files mit zugeben welche Du geändert hast.

Also nicht
svn add

sondern
svn add FHEM/MeinModul.pm

auch so beim commit

svn commit -m "54_MeinModul: Neue Version" CHANGED FHEM/54_MeinModul.pm



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

Sorry, bin gerade unterwegs

Hier mal das Ergebnis mit dem Handy


svn: Warnung: W150002: »/fhem_svn/FHEM/70_HYDRAWISE.pm« befindet sich bereits unter Versionskontrolle
svn: E200009: Konnte nicht alle Ziele hinzufügen, da einige Ziele schon versioniert sind
svn: E200009: Ungültiges Ziel für die angeforderte Operation
pi@raspberrypi:/fhem_svn $



Alex

CoolTux

Sieht doch gut aus.
Sollte eigentlich nun gehen mit einem Commit.

ABER!!!!

Bitte tue Dir und auch Rudi einen Gefallen und mache das ganze in Ruhe am PC. Nicht über Handy oder Tablet. Da sieht man seine "Fehler" vielleicht nicht und schwups ist das SVN versaut. Ich spreche da aus leidlicher Erfahrung  ;D


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

juhu, erfolg - mein erstes Modul  :)

Enter passphrase for key '/home/pi/.ssh/xasher.ppk':
Sende              CHANGED
Füge hinzu         FHEM/70_HYDRAWISE.pm
Übertrage Daten ..erledigt
Übertrage Transaktion...


Vielen Dank - ohne Eure Geduld hätte ich das nicht geschafft.

Grüße,
Alex

PS: Ja, Handy ist in der Tat nicht gut. Mit ist das Mäusekino zum arbeiten auch nicht so recht...

CoolTux

Wenn Du noch Interesse an packages (Klassen) hast dann einfach Bescheid geben.
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

Hi,

Klar hab ich Interesse.
Hast du Informationen davon?

Grüße,
Alex

CoolTux

Schau Dir mal das Modul an
https://git-tuxnet.ddns.net/FHEM/mod-TeslaPowerwall2AC

Ich bilde mir ein es ist Übersichtlich um das Prinzip zu verstehen.
Im Grunde deklarierst Du einen eigenen Namensraum in dem Deine Funktionen und alles Gültig sind.
Funktionen und Variablen aus der main musst Du importieren.

Wenn Du Fragen hast einfach fragen.


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