Neues Modul Verkehrsinfo

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

Vorheriges Thema - Nächstes Thema

mpl8580

Ich wollte mir ebenfalls die Meldungen auf Sonos ausgeben lassen. Generell funktioniert SonosSpeak.

Ich wollte nur das reine notify benutzen
define ntfy_Verkehrsinfo_on notify Verkehrsinfo:on {my $vInfo = ReadingsVal("Verkehrsinfo","message","");;$vInfo=~ s/\n//g;;fhem("set Sonos_Eingang Speak 20 de $vInfo")}

Leider klappt das nicht! Kann mir jemand helfen oder sagen was fehlt oder falsch ist?

Danke Euch

paul79

Zitat von: Tobias am 27 Dezember 2016, 20:12:06
hmm, mit einem Update kommt das Widget leider noch nicht mit...

wie meinst du das?
FHEM5.7 auf Pi3
Busware CUL433 (IT), JeeLink Lacrosse, HM-MOD-RPI-PCB, HM, TabletUI

Devender

Zitat von: mpl8580 am 27 Dezember 2016, 22:24:23
Ich wollte mir ebenfalls die Meldungen auf Sonos ausgeben lassen. Generell funktioniert SonosSpeak.

Ich wollte nur das reine notify benutzen
define ntfy_Verkehrsinfo_on notify Verkehrsinfo:on {my $vInfo = ReadingsVal("Verkehrsinfo","message","");;$vInfo=~ s/\n//g;;fhem("set Sonos_Eingang Speak 20 de $vInfo")}

Leider klappt das nicht! Kann mir jemand helfen oder sagen was fehlt oder falsch ist?

Danke Euch


Was funktioniert denn nicht?
Dein Verkehrsmodul muss zum einen Verkehrsinfo heissen (wenn du das notify übernimmst) und dein Sonos auch Sonos_Eingang. Andernfalls musst das notfy natürlich anpassen.
Was sagen die Module bei verbose 3-5?
Wird durch das Sonos Modul ein tts durchgeführt?
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

hartenthaler

Zitat von: mpl8580 am 27 Dezember 2016, 22:24:23
Ich wollte mir ebenfalls die Meldungen auf Sonos ausgeben lassen. Generell funktioniert SonosSpeak.

Ich wollte nur das reine notify benutzen
define ntfy_Verkehrsinfo_on notify Verkehrsinfo:on {my $vInfo = ReadingsVal("Verkehrsinfo","message","");;$vInfo=~ s/\n//g;;fhem("set Sonos_Eingang Speak 20 de $vInfo")}

Leider klappt das nicht! Kann mir jemand helfen oder sagen was fehlt oder falsch ist?
Um es einzugrenzen, was ergeben folgende Eingaben in der Kommandozeile:

  • set Sonos_Eingang Speak 20 de Hallo - sollte das Wort "Hallo" hörbar ausgeben
  • { ReadingsVal("Verkehrsinfo","message","") } - sollte die mehrzeilige Staumeldung ausgeben
Der Trigger im notify auf Verkehrsinfo:on kommt mir komisch vor. Wird ein solches Event erzeugt?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

mpl8580

#109
Hi,

danke für Eure Hilfe.

set Sonos_Eingang Speak 20 de Hallo Hallo wird hörbar ausgegeben!

set Sonos_Eingang Speak 20 de { ReadingsVal("Verkehrsinfo","message","") } liest Sonos mir Readings Verkehrsinfo message vor.

Im Foto seht ihr meine Verkehrinfo Installation.

Wie erzeuge ich denn das EVENT? Ich habe lediglich die Codezeile kopiert, da Bezeichnung von Sonos und Verkehrsinfo bei mir gleich sind. Scheinbar muss doch noch mehr konfiguriert werden, weiss leider nicht was jetzt wo, wie hinkommt.

hartenthaler

Zitat von: mpl8580 am 27 Dezember 2016, 23:43:27
set Sonos_Eingang Speak 20 de { ReadingsVal("Verkehrsinfo","message","") } liest Sonos mir Readings Verkehrsinfo message vor.
Nein! Missverständnis. Das sollte nicht eine Eingabezeile sein, sondern eine zweite Eingabe. Wenn Du das so in einer Zeile eingibst, dann ist ja klar, dass die drei Wörter "Readingsval Verkehrsinfo message" vorgelesen werden.

Zitat
Im Foto seht ihr meine Verkehrinfo Installation.

Wie erzeuge ich denn das EVENT? Ich habe lediglich die Codezeile kopiert, da Bezeichnung von Sonos und Verkehrsinfo bei mir gleich sind
Da sieht man schon, dass es bei Dir drei Devices vom Typ Verkehrsinfo gibt. Also ist die Bezeichnung eben nicht gleich, sondern muss angepasst werden. Hilfreich wäre gewesen, wenn Du gleich vollständige Angaben gemacht hättest, also die drei Definitionen beigefügt hättest, dann müsste man nicht so rumraten. Wie heißen Deine Devices denn? Z.B. Verkehrsinfo_A1? Dieser Device-Name muss dann in den ersten Parameter des Aufrufs von ReadingsVal, also etwa ReadingsVal("Verkehrsinfo_A1","message","")
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

mpl8580

#111
Danke für deine Mühe

Hier mal meine Definition:
defmod A1 Verkehrsinfo https://www.verkehrsinfo.de/httpsmobil/index.php?c=staulist&street=A1&lat=&lon= 600
attr A1 room Stau & Verspätungen


analog dazu das ganze mit A42 und A2

Ist das dann so richtig?
define ntfy_Verkehrsinfo_on notify Verkehrsinfo:on {my $vInfo = ReadingsVal("A1","message","");;$vInfo=~ s/\n//g;;fhem("set Sonos_Eingang Speak 20 de $vInfo")}

oder

benötige ich weitere Befehle oder einen Dummy?

Wenn ich diesen Befehl abgebe set Sonos_Kueche Speak 20 de [A1:message] dann sagt mir SonosSpeak Es liegen um 00:20 Uhr X Staumeldungen vor. Allerdings liest Sonos dann nicht weiter

hartenthaler

#112
Zitat von: mpl8580 am 28 Dezember 2016, 00:15:18
Ist das dann so richtig?
define ntfy_Verkehrsinfo_on notify Verkehrsinfo:on {my $vInfo = ReadingsVal("A1","message","");;$vInfo=~ s/\n//g;;fhem("set Sonos_Eingang Speak 20 de $vInfo")}
Jein, zumindest der Aufruf von ReadingsVal ist nun ok. Ein wichtiger Teilerfolg! Gratuliere! Ich gehe davon aus, dass eine Eingabe in der fhem-Kommandozeile, wie von mir vorgeschlagen, also
{ ReadingsVal("A1","message","") }
die vollständige, ggf. mehrzeilige Verkehrsmeldung anzeigt. Stimmt's?

Zitat
benötige ich weitere Befehle oder einen Dummy?
Nein. Wozu? Höchstens wenn Du mehr Funktionalitäten möchtest, also etwa Meldungen für alle deine drei Autobahnen ausgeben möchtest, oder z.B. morgens um 7 Uhr einen vollständigen Report möchtest oder ...

Zitat
Wenn ich diesen Befehl abgebe set Sonos_Kueche Speak 20 de [A1:message] dann sagt mir SonosSpeak Es liegen um 00:20 Uhr X Staumeldungen vor. Allerdings liest Sonos dann nicht weiter
Sehr schön! Soweit genau wie erwartet. Wenn die Staumeldung mehrzeilig ist, also ein oder mehrere New-Line-Zeichen \n enthält, dann hört Sonos dort auf vorzulesen, da Sonos immer nur eine Zeile vorliest. Daher der perl-Code in Deinem notify der diese Zeilenvorschubzeichen entfernt, d.h. substituiert (s/\n//g).

Bleibt das Kernproblem: wann/worauf soll denn Dein notify triggern? Oder in anderen Worten: wann möchtest Du eine Sprachansage erhalten? Vielleicht sobald für die A1 eine neue Staumeldung eintrudelt? Auch mitten in der Nacht? Was ist Dein Ziel? Solange das nicht klar ist, wird es nie wunschgemäß funktionieren können (erst Spezifikation, dann Realisierung, dann Test und Dokumentation). Das Kopieren von gefundenen Zeilen bringt Dich da nicht wirklich weiter. Zurück auf die technische Ebene: derzeit steht da als Trigger, d.h. Suchmuster: "Verkehsrinfo:on". Das wird nie eintreten, da es ein Device Verkehrsinfo gar nicht gibt. Dort muss ein Event etwa des Devices A1 stehen. Bitte schau Dir doch mal die Syntax von notify genauer an.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

mpl8580

#113
Danke für Deine Hilfe - jetzt habe ich es endlich hinbekommen.

defmod Verkehrsinfo_an notify Verkehrsinfo:on {my $vInfo = ReadingsVal("A42","message","");;$vInfo=~ s/\n//g;;fhem("set Sonos_Kueche Speak 20 de $vInfo")}

Habe mir zu dem genannten notify einen dummy angelegt der das ganze jetzt triggert.

Habe ich noch eine Möglichkeit in diese in mein notify die anderen Autobahnen unterzubringen, z.B. die A1?
Wäre das dann so richtig? Ziel wäre mit einem Aufruf alle Meldungen meiner Autobahnen abzufragen.
defmod Verkehrsinfo_an notify Verkehrsinfo:on {my $vInfo = ReadingsVal("A42","message",""|"A1","message","");;$vInfo=~ s/\n//g;;fhem("set Sonos_Kueche Speak 20 de $vInfo")}

martins

Hallo zusammen,

ich habe soeben die neue Version in das Repository eingecheckt, diese wird in kürze per FHEM Update verfügbar sein.

Änderungen:
- State Aktualisierung wurde geändert, damit das Attribut stateFormat berücksichtigt wird.
- Anzeigefehler in der Hessenschaumeldung wurde gefixt.
- In der commandref wurde der Verweis zu readingFn-Attributen hinzugefügt.


Viele Grüße
Martin

martins

#115
Zitat von: mpl8580 am 28 Dezember 2016, 01:43:50
Habe ich noch eine Möglichkeit in diese in mein notify die anderen Autobahnen unterzubringen, z.B. die A1?
Wäre das dann so richtig? Ziel wäre mit einem Aufruf alle Meldungen meiner Autobahnen abzufragen.

Du könntest statt für jede Autobahn einzeln ein Device anzulegen, auch ein Device für das Bundesland NRW anlegen und dann mit dem Attribut include_filter nur die Autobahnen einschließen die du benötigst.

define nrw Verkehrsinfo https://www.verkehrsinfo.de/httpsmobil/index.php?c=staulist&bl=260&lat=&lon= 600
attr nrw filter_include A1|A2|A42


Dann noch so ein Gedankengang zur Ausgabe über die Sonos. Wenn du die Ausgabe über ein Notify steuerst wird jedesmal das Geplapper aktiviert sobald ein update durch ist, also alle 10min rund um die Uhr. (Voraussetzung dein Notify funktioniert, das es das Event on nicht gibt, also einfach weglassen).
In der Regel benötigt man die Meldungen ja zu bestimmten Uhrzeiten am Tag, vielleicht ist DOIF oder AT die bessere Wahl. Notify in der Kombination erscheint mir nur Sinnvoll wenn du dir die Nachrichten zusenden lässt,  auf's Smartphon usw. oder das Notify auf eine bestimmte Zeit einschränken.

Tobias

Zitat von: paul79 am 27 Dezember 2016, 22:57:37
wie meinst du das?

Naja, ich habe verstanden dass bei einem Update auf das TabletUI Repository das neue Widget jetzt automatisch installiert wird. Passiert aber nicht. Schaue ich in die controls.txt, finde ich auch dort das Verkehrsinfo Widget nicht....

https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

mpl8580

#117
Das ist eine gute idee mit einem device für NRW. Wie müsste ich den code denn dann noch erweitern, wenn ich von den 3 autobahnen nur die ausfahrten 5 und 6 und 7 ausgeben bzw. überwachen will? Habe das ja jetzt quasi auch im include filter pro autobahn.

Würde dieser filter dann funktionieren?

A2|Ausfahrt \(5\)|Ausfahrt \(6\)|Ausfahrt \(7\)|A42|Ausfahrt \(12\)|Ausfahrt \(13\)|Ausfahrt \(14\)|Ausfahrt \(15\)|Ausfahrt \(16\)|Ausfahrt \(17\)|Ausfahrt \(18\)|Ausfahrt \(19\)

bjoernbo

ich habe die Verkehrsinfo wie folgt ( gem. der Hilfe) eingefügt. Allerdings findet keine Autoupdate statt!!!

Zitatdefmod A43 Verkehrsinfo https://www.verkehrsinfo.de/httpsmobil/index.php?c=staulist&street=A43&lat=51.48970201979895&lon=7.259318018066134 3600

Laut der Hilfe sollte sich diese alle 5 Minuten aktualisieren, oder nicht? Wir haben jetzt 12:42 Uhr: schaut man sich meine Hardcopy an, passiert da rein gar nichts. Das Modul habe ich heute Vormittag aktualisiert!
Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -

hartenthaler

@bjoernbo: also ich lese bei Dir Intervall 3600 und 3600 s sind 1 Stunde. 5 Minuten wären ein Intervall von 300 s.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...