Neues Modul Verkehrsinfo

Begonnen von martins, 29 Juni 2016, 22:21:38

Vorheriges Thema - Nächstes Thema

Devender

Ich hatte heute mal drüber nach gedacht, einen Wikieintrag für das Modul zu erstellen.
ggf. kann man dort gewisse Beispiele die bereits auf den 4 Seiten unter anderem Beschrieben werden zusammenfassen.

@martins: Wann geht das Modul in den normalen FHEM Updateprozess über?

Für das Vorlesen müsstest du im Modul eine Reading bilden, was die nötigen Informationen zum Vorlesen speichert bzw. diese aus deinen einzelnen Readings (wie bei meinem at) zusammensetzt.
Sprich Berücksichtigung deiner include und exclude Attribute und ggf. ein Priorisieren von Meldung.
Bei vielen Meldung hatte ich ab und an gemerkt, dass mir die z.b A66 Meldung am Anfang wichtiger gewesen wäre als andere Autobahnen.

Direktes Vorlesen aus dem Modul dürfte schwieriger werden, da die Hardware zum Vorlesen doch unterschiedlich sein kann (Sonos, Bose, mplayer und tts, etc..)
Ich hatte mir vor kurzem noch das jabber Modul eingerichtet und lasse mir per myUtils auf Anfrage von "Stau" auch die Meldung auf mein Handy schicken. Allerdings hier (auf Grund sonst zu langer Texte)
nur die ersten 4 Meldungen.

FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

martins

Ein Wikieintrag kling gut, da muss man sich hier nicht komplett durch den Thread wälzen...

Bis jetzt hatte ich das ehrlich gesagt noch nicht auf dem Schirm das Modul offiziell einzupflegen, werde mich aber damit mal beschäftigen was die Voraussetzungen dafür sind.

Meine Idee war es wie du schon erwähnt hast, die Nachricht in einem natürlich lesbaren Satz in ein Reading zu speichern. Hier kann dann jeder die Nachricht beliebig weiterverarbeiten.
Das direkte vorlesen möchte ich gar nicht ein bauen, weil ja jeder eine andere Hardware hat, es geht nur um die Bereitstellung des Textes.
Das was du mit Jabber machst, dafür nehme ich übrigens Telegramm, funzt Einwand frei.

Zum Thema Priorisierung, hier könnte ich ein weiteres Attribut erstellen. eine erste Idee wär, dassn man die Möglichkeit hat in Reihenfolge Zeichenketten anzugeben z.B.: A66, Axx, Bxx, Baustelle. Beim Zusammenbau der Nachricht wird dann die Reihenfolge eingehalten, nach vorkommen in der Meldung. Bei allem was nicht angegeben wird, bleibt die Reihenfolge wie es ausgelesen wird und kommt als letztes an die Nachricht.

Devender

#47
Ich kümmern mich mal am Sonntag um den Anfang mit dem Wiki. :-)
Man muss den Entwicklern ja auch Arbeit abnehmen  8)

Mit der Reihenfolge hatte ich mir das auch so vorgestellt. So kann man sich die Staus etc. seiner  "Route" in der richtigen Reihenfolge zusammenbauen. Bei mir wäre das dann z.b A661,A3,A66.

Edit: Wikiartikel erstellt
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

Devender

Nabend zusammen,

ich habe es dann heute doch schon geschafft diverse Informatione aus dem Beitrag nebst ein paar Beispielen aus meiner Konfiguration in einem Wikiartikel zu dokumentieren.
Den Artikel findet ihr hier: http://www.fhemwiki.de/wiki/Staumelder

@martins Ich habe dich als Modulautor unter Ansprechpartner genannt. Ich hoffe das geht in Ordnung. Vielleicht könntest du den link zum Artikel noch im ersten Post von dir einfügen?
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

martins

@Devender: Danke für das erstellen des Artikels, sieht super aus. Ich habe mir auch noch einen Account beantragt im Wiki und das mit der Nennung geht vollkommen in Ordnung.
Den Link Pflege ich im ersten Post gleich ein.

martins

Aufgrund von Anregungen zum Modul, gibt es jetzt ein Update mit den gewünschten neuen Funktionen.

Die Aktuelle Version (1.7RC1 -> bitte vom Dateinamen entfernen)
Die neue Version hänge ich erst einmal zum Testen und beurteilen an diesen Post an. Sollten in der nächsten Zeit keine Störung auftreten, bzw. Die Funktionen das gewünschte Ergebnis bringen, erfolgt die Aktualisierung im ersten POST.


Änderungen:
- Neues Reading in der die Meldungen natürlich lesbar dargestellt werden
- Neues Attribut für die Formatierung der Meldungen (Voranstellen von Strasse, Richtung, beides oder keines von beiden --> siehe commandref) (nur für Verkehrsinfo.de Verfügbar)
- Neues Attribut für die Sortierung Anhand von Zeichenfolgen hinzugefügt (Regulärer Ausdrücke werden unterstützt --> siehe commandref)
- Dem State wird bei Aktualisierung der Wert update zugeordnet
- Modul LWP::Simple wurde durch HttpUtils ersetzt (Art des Abrufes der Daten)
- Prüfung ob das Modul  HTML::TreeBuilder::XPath installiert ist, ansonsten Warnung
- commandref aktualisiert

Bitte gebt mir ein Feedback ob die Änderungen zwecks Lesbarer Nachricht und Sortierung soweit die Wünsche erfüllt.

Sollte es weitere wünsche oder Verbesserungen zum Modul geben, immer her damit und dann schaue ich wie und ob sich das umsetzen lässt.

Viele Grüße
martins

martins

Update

Die Aktuelle Version (1.7RC2 -> bitte vom Dateinamen entfernen)
Auch diese Version hänge ich erst einmal zum beurteilen hier an den Post an.

!!! Wichtig, diese Version ist nicht ohne weiteres einsetzbar, es wird das Perlmodul JSON benötigt:
sudo apt-get install libjson-perl

Änderungen:
- Modul wurde auf NonBlocking umgebaut, daher wird auch die JSON Library benötigt
- Code Optimierungen
- commandref aktualisiert
- Der Error "Cant call method "as_trimmed_text" in Verbindung mit der hessenschau.de Seite wurde behoben

Devender

Zitat von: martins am 12 Oktober 2016, 23:59:51

Änderungen:
1- Neues Reading in der die Meldungen natürlich lesbar dargestellt werden
2- Neues Attribut für die Formatierung der Meldungen (Voranstellen von Strasse, Richtung, beides oder keines von beiden --> siehe commandref) (nur für Verkehrsinfo.de Verfügbar)
3- Neues Attribut für die Sortierung Anhand von Zeichenfolgen hinzugefügt (Regulärer Ausdrücke werden unterstützt --> siehe commandref)
4- Dem State wird bei Aktualisierung der Wert update zugeordnet

Hier meine Ergebnisse zum Test mit der neuen 1.7RC2 Version von heute. (Hessenschau.de)
1 - Reading wird korrekt gefüllt sobald die Staumeldungen abgerufen werden. Vielleicht könnte man die Meldung noch mit einem "." o.Ä trennen. Das hört sich beim Vorlesen dann geschmeidiger an :-)
2 - nicht getestet für Hessenschau.de
3 - Funktioniert! Die Trennung von Schlagwörtern mit | funktioniert wie es soll.
4 - Update wird jetzt korrekt im Statereading angezeugt.

Sehr gute Arbeit! Danke!



FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

martins

Danke für die Rückmeldung.

zu 1. Das Thema mit dem Punkt, hier ist die Hessenschau Seite sehr inkonsistent, einmal sind die Meldungen mit Punkt am Ende, manchmal ohne.... Ich werde was einbauen das immer ein Punkt am Ende ist.

martins

Update

Die Aktuelle Version (1.8 -> bitte vom Dateinamen entfernen) habe ich wieder im ersten Post aktualisiert.

Änderung:
- Der lesbaren Nachricht von der Hessenschau.de Seite wurde das Satzzeichen " . " angefügt als natürlicher Trenner

martins

Hallo zusammen,

das Modul ist nun im Offiziellen Repository eingecheckt und in kürze per FHEM Update verfügbar.
https://forum.fhem.de/index.php/topic,62329.0.html

Viele Grüße
martins

Devender

Besten Dank fuer die weiter Arbeit!
Es läuft seit Wochen einwandfrei  8)

FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

paul79

Hallo,

ich bin noch nicht solange dabei habe aber ein kleines Problem mit dem Modul Verkehrsinfo in Tablet UI.
Das Modul finde ich sehr cool, lässt sich schön filtern.

Aber nun zu meinem Problem:
In FHEM werden zum Beispiel 3 Meldungen angezeigt.
Jetzt habe ich mir in Tablet UI eine Seite gebaut wo diese Meldungen angezeigt werden aber max. 10 Stück, dass ganze funktioniert auch super allerdings werden alte Meldungen in der Tablet UI nicht gelöscht.
Also habe ich die ersten 3 Meldungen neue und z.b. 6 alte Meldungen weil es am morgen mal 9 Meldungen im ganzen gab.
Es hilft weder die Cache löschen noch reboots aller Geräte, woran könnte das liegen?

Anbei der Code der Seite und Screenshots:


<div data-type="label" data-device="VI_Hessen" data-get="message" class="inline "></div>
</li>

<li data-row="3" data-col="2" data-sizex="5" data-sizey="3">
    <table width="100%" class="">

        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_1_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_1_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_1_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_1_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>

        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_2_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_2_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_2_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_2_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>

        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_3_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_3_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_3_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_3_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>
        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_4_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_4_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_4_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_4_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>
        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_5_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_5_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_5_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_5_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>
        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_6_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_6_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_6_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_6_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>
        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_7_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_7_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_7_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_7_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>
        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_8_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_8_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_8_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_8_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>
        <tr>
     <td><div class="narrow" data-type="symbol" data-device="VI_Hessen"
                     data-get="e_9_road"
data-states='["A5","A3","A13","A4","B45","B443a","B448","B3"]'
                     data-icons='["fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road","fa-road"]'
data-background-icons='["fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop","fa-stop"]'
                     data-colors='["white","white","white","white","black","black","black","black"]'
data-background-colors='["blue","blue","blue","blue","orange","orange","orange","orange"]' ></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_9_road" class="inline "></div></td>
            <td><div data-type="label" data-device="VI_Hessen" data-get="e_9_head" class="inline "></div>
                <div data-type="label" data-device="VI_Hessen" data-get="e_9_msg"  class="inline darker" style="color:#FAA460;"></div></td>
        </tr>
    </table>
</li>




Gruß Paul



FHEM5.7 auf Pi3
Busware CUL433 (IT), JeeLink Lacrosse, HM-MOD-RPI-PCB, HM, TabletUI

olliwood

Hallo und erst einmal ein großes "Dankeschön" für dieses tolle Modul.

Ich bin gerade dabei, es in meine Installation einzubinden und dank der Wiki-Anleitung hat das auch soweit geklappt. Ein Problem habe ich nun allerdings bei der Sprachausgabe über meinen Sonos.

Mittels eines Notifys hole ich mir den Wert aus "message" in eine eigene Variable und binde die in meinen FHEM Befehl ein. Das funktioniert auch grundsätzlich. Es wird jedoch nur bis zum Doppelpunkt innerhalb von "message" gelesen/gesprochen. Muss ich noch irgendwas einrichten oder ist das ein Problem im Modul?


define dmy_Verkehrsinfo dummy
attr dmy_Verkehrsinfo room Verkehrsinfo
attr dmy_Verkehrsinfo webCmd on:off

define ntfy_Verkehrsinfo_on notify dmy_Verkehrsinfo:on {my $vInfo = ReadingsVal("Verkehrsinfo","message","");;fhem("set Sonos_Eingang Speak 20 de $vInfo")}


Gruß
Oliver

martins

Hallo paul79,

es könnte daran liegen wie das Modul mit den Readings umgeht. Wenn ich mich recht erinnere, gab es schon einmal eine ähnliche Diskussion, da ging es um Wetter / Unwetterdaten, in Verbindung mit Tablet UI.

Der Updatemechanismus, läuft im Modul folgendermaßen ab:
1. alle Readings e_*_road, head, msg werden gelöscht
2. Die neuen Readings werden angelegt

Hier kann es natürlich sein das Tablet UI ein Problem hat, wenn man die Readings einfach weglöscht (ziemlich sicher). Dann bleiben einfach die alten Werte stehen.

Ich habe einmal eine neue Version des Moduls zum testen angehängt, diese ist als Beta zusehen und wurde nur einem Kurztest unterzogen, also bitte nicht Produktiv einsetzen.
Hier werden die Readings vor dem Löschen erst geleert.