Staumelder

Aus FHEMWiki
Version vom 17. September 2016, 23:02 Uhr von Devender (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Vorüberlegungen == Die Überlegung sich Stau. - und Verkehrsmeldung per FHEM bereitstellen zu lassen klingt verlockend. Für die Realisierung wurden mehr…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Vorüberlegungen

Die Überlegung sich Stau. - und Verkehrsmeldung per FHEM bereitstellen zu lassen klingt verlockend. Für die Realisierung wurden mehrer Wege betrachtet.


Umsetzungen

Es gibt bereits mehrere Möglichkeiten Stau.- und Verkehrsmeldung mit FHEM auszulesen und darzustellen

Info green.pngVariante per HTTPMOD oder Google Maps muss noch beschrieben werden
  • Stau. - und Verkehrsmeldung über das Modul Verkehrsinfo
  • Stau. - und Verkehrsmeldung per HTTPMOD
  • Stau. - und Verkehrsmeldung über Google Maps


Das Verkehrsinfo Modul

Das Verkehrsinfo Modul bietet für Stau. - und Verkehrsmeldung- eine übersichtliche Möglichkeit die potentiellen Meldungen anzeigen zu lassen. Dabei bedient es sich aktuell aus zwei Webseiten.

Für das Modul wird das Perlmodul HTML::TreeBuilder::XPath benötigt. Installiert werden kann dies mit nachfolgendem Befehl.

sudo apt-get install libxml-treebuilder-perl libhtml-treebuilder-xpath-perl

Die Grundsätzliche Definition des Moduls sieht wie Folgt aus:

define <name> Verkehrsinfo <url> <interval>

Aktuell Mögliche Varianten

"Verkehrsinfo.de"

Über die Webseite verkehrsinfo.de können die Stau. - und Verkehrsmeldungen von ganz Deutschland abgefragt werden. Dabei kann über die Webseite nach Bundesland oder Strassentyp gefiltert werden. Aus dieser Filterung wird auch der anschließend benötigte Link für das Modul generiert.

Eine Beispielkonfiguration anhand der Filterung auf einen Strassentyp. Abfrageintervall hier 3600 Sekunden.

define A66 Verkehrsinfo https://www.verkehrsinfo.de/index.php?country=1&street=A66&UIN= 3600

"hessenschau.de"

Über die Webseite hessenschau.de können die Stau. - und Verkehrsmeldungen von Hessen abgefragt werden. Eine Filterung auf bestimmte Strassentypen oder Meldung ist hier nicht möglich.

Eine Beispielkonfiguration mit Abfrageintervall von 3600 Sekunden.

define Staumelder Verkehrsinfo http://hessenschau.de/verkehr/index.html 3600

Zusätzliche Einstellungen

Info green.pngBeide Filter können gleichzeitig benutzt werden,

aber es kann auch wahlweise nur einer verwendet werden. Die Filter sind mit einem Logischen UND verknüpft. Das heist z.B.: wenn etwas ausgeschlossen wurde,

kann es nicht mit dem Einschlussfilter wiedergeholt werden.


Das Modul erlaubt das Filtern von Meldungen anhand von Attributen wie filter_exclude und filter_include. Dabei werden die geladenen Meldung nach bestimmten Schlagwörtern durchsucht und somit nur die Meldung in Readings gespeichert, für die einer der beiden Attribute zutrifft.

attr Staumeldungen filter_exclude Baustelle | Sperrung | baustelle
attr Staumeldungen filter_include Stau | Unfall


Die Funktion kann überall in FHEM aufgerufen werden und liefert als Rückgabewert das gleiche Ergebnis wie der get <name> info Aufruf. Der Rückgabewert als Text, kann dann für weiteres verwendet werden.

Verkehrsinfo_GetData(<devicename>)
my $result = Verkehrsinfo_GetData('A8')

Vorlesen von Meldungen

Die Meldungen aus den Readings lassen sich auch mit FHEM vorlesen. Dazu bedarfs es einem System, welches Text in Sprache (TTS) umwandeln kann. Hier bietet sich das Modul TTS oder z.b ein Sonossystem an. Auch weitere System zum Vorlesen von Meldungen sind Nutzbar.

Folgendes Beispiel zeigt ein at welches dynamisch anhand der Meldungsanzahl eine Variable füllt. Diese Variable wird dann von einem Sonossystem oder alternativ einem TTS System vorgelesen.

define Staumelder at*05:36:00  {
my $stau_counter = ReadingsVal("Stau","count","");
my $stau = "Es liegen " . " " . "$stau_counter" ." Staumeldungen um ". TimeNow() ." vor:";
my $complete_message;

## Anhand Meldungszahl das Reading in der Schleife zusammenbauen
my $reading_pre="e_";
my $reading_suff="_msg";
my $reading;

## Iterationsvariable
my $i = 0;

while ($stau_counter >= $i)
     {
       $reading = "$reading_pre" . "$i" . "$reading_suff";
       $complete_message = "$complete_message" .".". ReadingsVal("Stau",$reading ,"");
       $i++;
     }

fhem "set Staudummy $stau$complete_message ";
fhem "set MeinSonossystem Speak 50 de $stau$complete_message";
fhem "set MeinTTS tts $stau$complete_message";
}

Senden von Meldungen per Messenger

Befindet man sich allerdings nicht zu Hause und möchte dennoch wissen, ob es im definierten Bereich Verkehsbehinderung gibt, können die Meldungen auch per Messenger Modul zugesendet werden.


Jabber

Wenn das Jabbermodul bereits installiert und konfiguriert wurde kann mit folgendem Code in der 99_myUtils.pm das Abrufen von Staumeldungen implementiert werden. Der Code bezieht sich dabei auf die Grundeinrichtung des Jabbermoduls von hier: FHEM_spricht_jabber

Info green.pngDie Anzahl Meldungen zum Versenden wurde auf fünf begrenzt.
 # Staumeldung abrufen
  if($cmd eq "stau") 
  {
    fhem("set Staumeldungen update");
    $newmsg.= "Staumeldungen von: ";
    $newmsg.=ReadingsVal("Staumeldungen", "date_time", "---").":::";
    $newmsg=$newmsg."\n";
    $newmsg.=ReadingsVal("Staumeldungen", "e_1_msg", "---")." , ";
    $newmsg=$newmsg."\n";
    $newmsg.=ReadingsVal("Staumeldungen", "e_2_msg", "---")." , ";
    $newmsg=$newmsg."\n";
    $newmsg.=ReadingsVal("Staumeldungen", "e_3_msg", "---")." , ";
    $newmsg=$newmsg."\n";
    $newmsg.=ReadingsVal("Staumeldungen", "e_4_msg", "---")." , ";
    $newmsg=$newmsg."\n";
    $newmsg.=ReadingsVal("Staumeldungen", "e_5_msg", "//Ende").".";
  }

telegram

Informationen noch nicht verfügbar


Ideen

Attribut zur Priorisierung von Meldung

Ansprechpartner

  1. martins (martins) für Modul Verkehrsinfo
  2. Devender (Dirk ) für Wiki und Doku