Für den Urlaub: KPIs via Mail / SMS?

Begonnen von Raven, 08 Februar 2015, 12:29:13

Vorheriges Thema - Nächstes Thema

Raven

Servus zs.

im Urlaub (insdb. Winterurlaub) möchte ich auf einige Status-Infos von daheim nicht verzichten.
Wie könnte ein solcher Ansatz im FHEM-Umfeld aussehen oder gleich ein CRON-Job aufsetzen?

Die jeweiligen Daten dann via get-Befehl ermitteln? get <name> <infile> <outfile> <from> <to> <column_spec>
Aber um die avg / min / max Werte zu erhalten, wären noch weitere Schritte erforderlich...aber wie?

Gibt es bereits vorhandene Module, die ich für diesen Zweck wiederverwenden könnte?

Konfigurierbar:
- Benachrichtungszyklus: x-Tage (tägl., wöchentl., etc.)
- Kanal: Mail / SMS (*)

(*) SMS, falls kein (oder schlecht verfügbares) Internet vor Ort verfügbar ist.
Allerdings konnte ich keinen Dienst oder Mailprovider finden, der Mails an SMS weiterleitet.

Beispiele:
- Laufzeit der Ölheizung: aktuell / Vortag
- Stromverbrauch: aktuell / Vortag
- avg. / min / max Temperatur: Aussen, Wohnzimmer, ...

Mail / SMS-Darstellung:
Heizung: 6h / 8h
Strom:    800kw / 700kw
Aussen:    15 / 10 / 20
WZ:          14 / 13 / 16
Proxmox-Prod/Dev: Homematic i.V.m. VCCU (HMLan, HM-MOD-RPI-PCB), Philips Hue, Viessmann (optolink)
Fritzbox 7590

nesges

Mir ist nicht ganz klar geworden wonach du fragst. Für Benachrichtigungen gibt es jede Menge Module, lies die Commandref einmal quer, da wird dir schon das ein oder andere auffallen. Oder suchst du ein Modul, das Benachrichtigungen auslöst? Mir ist nichts aufgefallen, das diese Aufgabe generisch übernehmen würde, aber das liegt wahrscheinlich daran, dass notify, at, watchdog, Treshold, DOIF etc. alle recht einfach und gut dokumentiert sind.

IOW: Du wirst die Benachrichtigungen selbst anlegen müssen, aber das ist kein Hexenwerk.


Raven

In der Tat die gängige Module mit Benachrichtigungsfkt. kenne ich (hoffe ich zumindest), aber ich suche nach einer Möglichkeit gleich mehrere Infos diverser Sensoren in eine Mail / SMS zu packen und hier insbsd. auch avg/max/min Werte reinzupacken. Okay, jetzt gerade beim Schreiben, kommt mir die Idee eine Perl-Fkt. zu erstellen und hier dann die diversen Values ermitteln und dann in einen entsprechenden String packen und dann via Mail versenden. Die von mir gesuchten Min/MAx/AVG-Werte könnte ich mir dann i.V.m. dem Statistics ermitteln.
Okay, hört sich nach einen Plan an. Danke
Proxmox-Prod/Dev: Homematic i.V.m. VCCU (HMLan, HM-MOD-RPI-PCB), Philips Hue, Viessmann (optolink)
Fritzbox 7590

nesges

Sowas in der Art mache ich auch. Hier ein Stück Code als Ansatz:

sub status(;$) {
    my $event=shift||'leaving';
   
    my @msg;

    my %watch = (
        'leaving' => {
            # standard operator "ne"
            #  DEVICE => SOLLWERT
            "OPT_ALARM" => "1",
            "OPT_PARTY" => "0",
            "LICHT_INFO" => "off",
            "W_FENSTER_Balkon" => "closed",
            "S_FENSTER_LINKS" => "closed",
            "MILIGHT_Zone1_Wohnzimmer" => "off",
            "MILIGHT_Zone2_Schlafzimmer" => "off",
            "MILIGHT_Zone3_Kueche" => "off",
            "K_SWITCH_A3_Boxen" => "off",
            "REVO" => "absent",
            # andere operatoren
            #  DEVICE => MELDE-CONDITION
            "B_HEIZUNG:desiredTemperature" => "> 21.0",
            "W_HEIZUNG:desiredTemperature" => "> 21.0"
        }
    );

    foreach my $id (keys %{$watch{$event}}) {
        my ($device, $reading) = split ':', $id;
        my $name = AttrVal($device, "alias", $device);
        my ($operator, $sollwert);
        if($watch{$event}{$id} =~ /(\S+)\ (.+)/) {
            $operator = $1;
            $sollwert = $2;
        } else {
            $operator = "ne";
            $sollwert = $watch{$event}{$id};
        }
       
        my $_operator = $operator;
        if($operator eq "ne") {
            $_operator = "ist nicht";
        } elsif($operator eq "eq") {
            $_operator = "ist";
        } elsif($operator eq ">") {
            $_operator = "groesser als";
        } elsif($operator eq "<") {
            $_operator = "kleiner als";
        } elsif($operator eq "==") {
            $_operator = "gleich";
        } elsif($operator eq "!=") {
            $_operator = "ungleich";
        }
       
        if($reading) {
            if(eval "ReadingsVal('$device', '$reading', undef) $operator '$sollwert'") {
                push @msg, "$name:$reading $_operator $sollwert";
            }
        } else {
            if(eval "Value('$device') $operator '$sollwert'") {
                push @msg, "$name $_operator $sollwert";
            }
        }
    }
   
    fhem("set PUSH message ".join(' +++ ', @msg)."|WOPR-Status: $event");
}

Raven

Perfekt! Dankeschön! Damit werde ich mich auseinander setzen und studieren. Sehr gut, ich komme hier - mit Hilfe Deines Codes - wieder ein Stück weiter mit meinen Perk-Kenntnissen.
Proxmox-Prod/Dev: Homematic i.V.m. VCCU (HMLan, HM-MOD-RPI-PCB), Philips Hue, Viessmann (optolink)
Fritzbox 7590

Deudi

Um eine schnelle Übersicht über den Zustand zuhause zu erhalten, habe ich mir nach betateilchens Anleitung einen RSS-Feed für das iPhone gebaut. Das Bild wird von einer Synology alle 5 Minuten automatisch erstellt und ist über das Internet jederzeit abrufbar. Damit kann ich überall und jederzeit die wichtigsten Informationen abrufen.
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Raven

auch guter Hinweis! RSS ist bei mir fürs Tablet bereits vorhanden; müsste dann eine Mobile-Version noch erstellen.
RSS-Ansatz hat auch einen gewissen Charme. Lass ich mir durch den Kopf gehen. Dankeschön.
Proxmox-Prod/Dev: Homematic i.V.m. VCCU (HMLan, HM-MOD-RPI-PCB), Philips Hue, Viessmann (optolink)
Fritzbox 7590