FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: crazier96 am 07 Februar 2020, 13:52:44

Titel: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 07 Februar 2020, 13:52:44
Hey,

Ich habe mich an mein erstes Modul gewagt und zwar für Blaulichtsms.
Blaulichtsms ist ein Alarmierungsdienst für Rettungsdienste über Internet mehr Informationen hier: https://blaulichtsms.net/ (https://blaulichtsms.net/)
Das Modul basiert auf der Dashboard API von Blaulichtsms. Man braucht natürlich die Login Daten des Blaulichtsms Accounts und Die Organisation muss natürlich auch darüber Alarmieren.

Das Modul läuft bei mir jetzt schon einige Wochen stabil, heißt aber nicht das sich nicht noch Fehler eingeschleust haben. Für Verbesserungsvorschläge bin ich natürlich immer offen. Ich weiß auch, dass ich wenn überhaupt einen sehr kleinen Benutzerkreis damit anspreche aber eventuell finden sich ja ein paar Leute die das Modul mal Testen und gebrauchen können.

Das Modul kann hier heruntergeladen werden:
https://github.com/fhem/bsms

Das Modul wird wie folgt definiert:

define <name> bsms <customerID> <username> <password>

attr <name>  Alarmdauer  <value> ##in sekunden default 3600

attr <name> Intervall <value> ##in sekunden default 10

Grüße
Julien
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: CoolTux am 07 Februar 2020, 14:02:14
Bitte überarbeite das Modul doch noch einmal.

Du arbeitest nicht mit packages, somit wird Dein Code im Main Kontext aufgerufen. Dennoch verwendest Du keine ein eindeutigen Funktionesnamen. Eine Funktion heißt sogar main. Ich kann mir beim besten Willen nicht vorstellen wie das sauber laufen kann.


sub is_alarm($){
my ($hash) = @_;
my $name = $hash->{NAME};
my $duration = 3600;

if($hash->{alarmdauer} > 0 ) {
     $duration = $hash->{alarmdauer};
}

my $alarms = get_alarms($hash);
my $dt = DateTime->now;
my $tslocal = $dt->epoch;
my $obj = our $alarms->{"alarms"}[0]{"alarmDate"};
my $txt = our $alarms->{"alarms"}[0]{"alarmText"};
my $time_lastalarm = convert_time($obj) ;
my $timelastoffset = $time_lastalarm + $duration;
my $dtt = DateTime->from_epoch( epoch => $time_lastalarm );
$dtt->set_time_zone( "Europe/Berlin" );
my $ymd    = $dtt->ymd('.'); # 1974.11.30 - also 'date'
my $y   = $dtt->year;
my $m  = $dtt->month; # 1-12 - you can also use '$dt->mon'
my $d    = $dtt->day; # 1-31 - also 'day_of_month', 'mday'
my $hms    = $dtt->hms; # 13:30:00
my $timestr = "$d.$m.$y $hms";

unless ($alarms) { return undef;}

setreading($hash, "letzte_Alarm", $timestr);
setreading($hash, "Meldetext", $txt);

if($timelastoffset >= $tslocal or our $testalarm == 1){

setreading($hash, "Alarm", "Alarm");
set_state($hash, "Alarm");
return 1;

}else{

setreading($hash, "Alarm", "kein Alarm");
set_state($hash, "running");

return undef;
}

}


sub set_state($$) {
my ($hash, $value) = @_;
$hash->{STATE} = $value;
return 1;
}


sub main($) {
my ($hash) = @_;
my $intervall = 30;
if( $hash->{intervall} > 0 ) {
     $intervall = $hash->{intervall};
}
my $timer = gettimeofday() + $intervall;
my $start ="main";

get_alarms($hash);
is_alarm($hash);
our $hash = $hash;

RemoveInternalTimer($hash);
  InternalTimer($timer, $start, $hash,0);
}

sub setreading($$$) {
my ($hash, $reading, $value) = @_;
readingsBeginUpdate($hash);
readingsBulkUpdate( $hash, $reading, $value );
readingsEndUpdate( $hash, 1 );
}

sub getreading($$$) {
my ($device, $reading, $hash) = @_;
my $result = ReadingsVal($device, $reading, "");

return $result
}
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 07 Februar 2020, 14:10:30
OK sorry hab es erst mal raus genommen danke für die Info. läuft bei mir aber tatsächlich ohne Fehler durch. Ich Überarbeite nochmal alles und würde mich dann nochmal melden.
Vielen Dank
Julien
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: CoolTux am 07 Februar 2020, 14:17:07
Für den Anfang reicht es wenn Du die Präfix Gestaltung durch ziehst. Also überall vor den Funktionsnamen bsms_ schreibst so wie Du angefangen hast.
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 07 Februar 2020, 16:54:48
So ich hab das Modul nochmal überarbeitet Funktionsnamen sollten jetzt stimmen. Sorry nochmal für den Fehler hätte ich eigentlich auch selbst sehen müssen aber irgendwie völlig ignoriert.

CoolTux nochmals danke das du mich darauf aufmerksam gemacht hast und für deine Hilfe.

Grüße
Julien
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: CoolTux am 07 Februar 2020, 18:12:55
Zitat von: crazier96 am 07 Februar 2020, 16:54:48
So ich hab das Modul nochmal überarbeitet Funktionsnamen sollten jetzt stimmen. Sorry nochmal für den Fehler hätte ich eigentlich auch selbst sehen müssen aber irgendwie völlig ignoriert.

CoolTux nochmals danke das du mich darauf aufmerksam gemacht hast und für deine Hilfe.

Grüße
Julien

Ich würde Dir auch empfehlen die für das abrufen der Daten die FHEM Internen Funktionen aus HttpUtils zu nehmen. Gerade was das Thema nonBlocking  an geht.
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 07 Februar 2020, 18:56:51
Zitat von: CoolTux am 07 Februar 2020, 18:12:55
Ich würde Dir auch empfehlen die für das abrufen der Daten die FHEM Internen Funktionen aus HttpUtils zu nehmen. Gerade was das Thema nonBlocking  an geht.
OK danke für den Tipp das gucke ich mir morgen mal an. :)
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 09 Februar 2020, 18:13:43
Kurze Info: Habe das Modul auf HttpUtils umgestellt.
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: CoolTux am 09 Februar 2020, 18:20:15
Schneller Blick. Sieht gut ist. Haste toll gemacht.
Danke Dir
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 09 Februar 2020, 19:34:30
Zitat von: CoolTux am 09 Februar 2020, 18:20:15
Schneller Blick. Sieht gut ist. Haste toll gemacht.
Danke Dir
Ich habe dir zu danken für deine Unterstützung.
Vielen dank :)
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: CoolTux am 09 Februar 2020, 19:42:16
Wenn Du magst kannst Du das Modul gerne ins fhem Github Repository transferieren.
Gib einfach kurz Bescheid dann schicke ich Dir eine Einladung.
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 09 Februar 2020, 20:07:55
Zitat von: CoolTux am 09 Februar 2020, 19:42:16
Wenn Du magst kannst Du das Modul gerne ins fhem Github Repository transferieren.
Gib einfach kurz Bescheid dann schicke ich Dir eine Einladung.

Ja gern :)
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: CoolTux am 09 Februar 2020, 20:20:22
Hast Post
Titel: Antw: Neues Modul:98_bsms.pm - Modul für Blaulichtsms Dashboard API
Beitrag von: crazier96 am 09 Februar 2020, 22:44:18
OK hab ich erledigt.
Danke :)