FHEM Forum

FHEM - Anwendungen => Multimedia => Thema gestartet von: Eragos am 13 Juli 2017, 21:21:09

Titel: [Neues Modul] LaMetric
Beitrag von: Eragos am 13 Juli 2017, 21:21:09
Als Kickstarter Backer habe ich seit einiger Zeit ein LaMetric Display. Da die ersten Firmware Versionen nur einen Server Push konnten, hatte ich mir bisher eine private App gebaut, die mir einige FHEM Infos angezeigt hat. Mittlerweile hat die Firmware auch eine API (http://lametric-documentation.readthedocs.io/en/latest/index.html) für lokalen Push. Ich habe mich einmal hingesetzt und ein FHEM Modul dazu geschrieben. Vielleicht kann der eine oder andere ja gebrauchen.

Hier einmal ein Beispiel GIF (https://www.dropbox.com/s/2tvjg7msmvave2i/LaMetric.gif?dl=0) (wie man Bilder hier einfügt, hab ich noch nicht gefunden)

Aktuell lasse ich bei mir die Innentemperatur, Außentemperatur und Wetterkondition als Icon, sowie die Uhrzeit im 5 Sekundentakt rollieren. Diese Standardanzeige wird von Ereignissen wie Telefonanruf oder anderen Ereignissen unterbrochen.

Um euer Display anzusprechen ist ein Api-Key notwendig. Diesen könnt ihr einsehen, indem ihr euch als Developer registriert (https://developer.lametric.com). Eventuell muss das Device dort noch hinterlegt werden. Das ist bei mir aber schon zu lange her 8) Der Api-Key ist danach unter MyDevices zu finden.

Folgende Funktionen sind bereits integriert:
* Senden von Nachrichten an das Display
* Per Nachricht können Icon, Sound, Durchläufte und natürlich der Nachrichtentext angepasst werden.
* Die Benachrichtigungsart ist einstellbar (none, info, alert)
* Die Nachrichtenpriorität kann frei gewählt werden (info, warning, critical)
* Die Lebenszeit der Nachrichten in der Benachrichtigungsqueue kann eingestellt werden.
* Es sind alle Icons aus der LaMetric Icon Gallery (https://developer.lametric.com/icons) möglich. Ebenfalls könnt ihr euch dort eigene erstellen.
* Die Lautstärke, Displayhelligkeit und -Modus können eingestellt werden.
* Einige Default-Einstellungen können über Attribute gesetzt werden.


Bei der Erstellung des Devices gilt ist folgende Syntax:
define <name> LaMetric <IP> <api key>

Danach kann auch schon die erste Nachricht versendet werden:
set LaMetric1 msg The lazy fox jumps over the quick brown dog

Um für jede Nachricht ein eigenes Icon oder einen anderen Benachrichtigungssound anzugeben, nutzt man z.B. folgende Syntax:
set LaMetric1 msg "The lazy fox jumps over the quick brown dog" sound=cat icon=i1134

Weitere Beispiele und ausführlichere Infos findet ihr in der (aktuell nur englischen) Commandref zu dem Modul.

Über Feedback, konstruktive Kritik und/oder Anregungen würde ich mich freuen.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Thyraz am 14 Juli 2017, 09:40:33
Hallo Eragos.

Das Bild von Dropbox endet bei mir mit einem 404 Error.

Gibt übrigens noch ein weiteres LaMetric Modul für FHEM:
https://forum.fhem.de/index.php/topic,25107.0.html

Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Eragos am 14 Juli 2017, 17:18:51
Danke dir für die beiden Hinweise  :)

Die Bild URL habe ich angepasst.
Das andere Modul hatte ich gar nicht gesehen. Schaue ich mir aber mal an.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 21 Juli 2017, 16:27:40
Zitat von: Eragos am 13 Juli 2017, 21:21:09
Eventuell muss das Device dort noch hinterlegt werden.
Das Device wird bei der Inbetriebnahme automatisch angelegt.

Zitat von: Eragos am 13 Juli 2017, 21:21:09
Aktuell lasse ich bei mir die Innentemperatur, Außentemperatur und Wetterkondition als Icon, sowie die Uhrzeit im 5 Sekundentakt rollieren.
Wie steuerst Du aktuell Deine Standardanzeige? Komplett über fhem (auch die Zeit) oder weiterhin mit Standard- und privaten Apps?

Bei der Standard-Zeit-App vermisse ich die Möglichkeit, das ClockFace per API aus fhem zu ändern. Habe ich da nur etwas übersehen?

Ich würde gerne auch meine Sonos-Titel anzeigen solange die Box läuft. Mit einer App kann auch zwischen Pause und Play gewechselt werden. Wie hast bzw. hattest Du die Informationen von fhem an die private App geschickt oder geht das auch mit Deinem Modul?

Viele Grüße
Manfred
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Eragos am 22 Juli 2017, 18:19:04
Zitat von: ares am 21 Juli 2017, 16:27:40
Das Device wird bei der Inbetriebnahme automatisch angelegt.
Wie steuerst Du aktuell Deine Standardanzeige? Komplett über fhem (auch die Zeit) oder weiterhin mit Standard- und privaten Apps?
Aktuell spiele ich noch mit beidem rum. Die Zeitanzeige habe ich auf Stunden:Minuten begrenzt, da sie ja nicht Sekundengenau ist. Das reicht mir aktuell aus.

Zitat von: ares am 21 Juli 2017, 16:27:40
Bei der Standard-Zeit-App vermisse ich die Möglichkeit, das ClockFace per API aus fhem zu ändern. Habe ich da nur etwas übersehen?
In der API habe ist mit hierzu nichts über den Weg gelaufen. Ich nutze die Standard-Zeit-Appallerdings auch nicht. Sämtliche Anzeigen werden bei mir über FHEM gepuscht. Neben der Rotation aus dem GIF, gibt es bei weiteren Ereignissen zusätzliche Infos.

Mittlerweile habe ich festgestellt, dass die Rotation sauberer über die Private-App läuft. Für alle anderen Nachrichten wird diese dann einfach unterbrochen und läuft danach weiter.
Ich werde die Tage mal schauen, ob man das mit Parametern versehen und veröffentlichen kann. Ansonsten kann ich auch eine kurze Anleitung schreiben, wie man sich selber eine entsprechende App baut.

Zitat von: ares am 21 Juli 2017, 16:27:40
Ich würde gerne auch meine Sonos-Titel anzeigen solange die Box läuft. Mit einer App kann auch zwischen Pause und Play gewechselt werden. Wie hast bzw. hattest Du die Informationen von fhem an die private App geschickt oder geht das auch mit Deinem Modul?

Das SONOS Modul habe ich mit heute auch mal angesehen, läuft aber in meiner Systemkonstellation aktuell nicht (https://forum.fhem.de/index.php/topic,10033.msg662870.html#msg662870). Danach werde ich mal ein wenig SONOS Informationen integrieren.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 23 Juli 2017, 11:39:30
Zitat von: Eragos am 22 Juli 2017, 18:19:04
Mittlerweile habe ich festgestellt, dass die Rotation sauberer über die Private-App läuft. Für alle anderen Nachrichten wird diese dann einfach unterbrochen und läuft danach weiter.
Ich werde die Tage mal schauen, ob man das mit Parametern versehen und veröffentlichen kann. Ansonsten kann ich auch eine kurze Anleitung schreiben, wie man sich selber eine entsprechende App baut.
Eine Anleitung zum Erstellen der App gibt es bereits direkt von lametric und auf anderen Seiten, die Aktualisierung über curl (ohne fhem) funktioniert bei mir auch problemlos. Was ich allerdings nirgends gelesen habe ist, dass die Channels nicht über "local push url" ignoriert werden und zumindest bei mir nur über den Umweg https://developer.lametric.com funktionieren. Eine fertige Lösung mit Parametern schränkt einen wahrscheinlich nur ein. Mich würde interessieren, wie Du die Rotation aus fhem umgesetzt hast, so dass ich bei der Integration in fhem nicht bei Null angangen muss. Vielleicht kannst Du ja Dein Beispiel als Grundlage zur Verfügung stellen, die Anpassung inkl. Sonos sollte nicht das Problem sein.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 23 Juli 2017, 17:09:06
Hier eine Kurzanleitung, wie ich die Sonos-App am Beispiel "Wohnzimmer" aktuell umgesetzt habe.

Unter https://developer.lametric.com/ eine Indicator-App erstellen.
1. CREATE APP
1. Select icon: "music note orange big" (#2020)
2. Enter text: "Sonos"
Communication type: Push

2. STORE INFO
App-Icon: "music note orange big" (#2020)
App name: Sonos Wohnzimmer
Short description: Sonos Wohnzimmer (fhem)
Private App: X

Optional wäre es auch noch möglich, z.B. Pause durch die Action-Taste am Sonos-Device auszulösen.

Nachdem die App veröffentlicht wurde kann sie auf die Lametric installiert werden, vorher kopieren wir uns noch folgende 2 Infos:
Local Push URL: https://192.168.123.123:4343/api/v1/dev/widget/update/com.lametric.12345678901234567890123456789012/1
Access token: ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMN==

Wird beim Installieren "Notify" ausgewählt, dann wird bei jedem Liedwechsel der Titel kurz angezeigt und kann durch manuelles Auswählen (Rechts/Links an der Lametric) erneut angezeigt werden.

Danach reicht ein Notify für die Aktualisierung. Die IP, das Sonos-Device (Wohnzimmer) und die Infos von oben müssen natürlich ausgetauscht werden:
define Sonos_Wohnzimmer_LaMetric notify Sonos_Wohnzimmer:infoSummarize2:.* {\
my $text = ReadingsVal("Sonos_Wohnzimmer", 'infoSummarize1', '-');;\
my $transportState = ReadingsVal("Sonos_Wohnzimmer", 'transportState', '-');;\
my $icon = "";;\
$icon = "i2020" if ($transportState eq 'PLAYING');;\
$icon = "i2366" if ($transportState eq 'PAUSED_PLAYBACK');;\
$icon = "i751"  if ($transportState eq 'STOPPED');;\
HttpUtils_NonblockingGet({ \
url         => 'http://192.168.123.123:8080/api/v1/dev/widget/update/com.lametric.12345678901234567890123456789012', \
data        => '{\
"frames": [\
{\
"text": "'.$text.'",\
"icon": "'.$icon.'"\
}\
]\
}',\
header      => {\
'X-Access-Token' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMN=='\
},\
callback    => sub(){}\
});;\
}
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Eragos am 24 Juli 2017, 18:00:52
Ich habe den local push einmal integriert. Die aktuelle Version findest du oben im ersten Post.

Deine App schaut ansonsten schon mal passend aus.

Zusätzliche (aktuell noch undokumentierte Attribute)

* LaMetric_AppPushEndpoint => com.lametric.12345678901234567890123456789012/1
* LaMetric_AppPushToken => ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMN==

Danach kannst du mit

set LaMetric privatemsg Dies ist eine Nachricht icon=a1232
set LaMetric privatemsg Dies ist eine Nachricht ohne Icon icon=none


Sound und so gibt es da nicht, da es bei einer Dauerschleife wohl wenig Sinn macht.

Mein DOIF dazu sieht wie folgt aus:


([Fritzbox_CallMon:event] eq "ring" or [Fritzbox_CallMon:event] eq "connect")
(
   IF ([Fritzbox_CallMon:external_name] eq "unknown")
      ({
         my $call = ReadingsVal("Fritzbox_CallMon","external_number",0);;
         fhem("set LaMetric privatemsg $call icon=a1232");;
         fhem("set do_LaMetric_state -1");;
      })
   ELSE
      ({
         my $call = ReadingsVal("Fritzbox_CallMon","external_name",0);;
         fhem("set LaMetric privatemsg $call icon=a1232");;
         fhem("set do_LaMetric_state -1");;
      })
)

DOELSEIF ([Fritzbox_CallMon:event] eq "disconnect")
({
   my $seconds = ReadingsVal("Fritzbox_CallMon","call_duration",0);;
   my $duration = fSec($seconds);;
   fhem("set LaMetric privatemsg $duration icon=i2077");;
   fhem("set do_LaMetric_state 1");;
})

DOELSEIF ([+00:00:05])
({
   my $temp;;
   my $icon;;
   my $state = ReadingsVal("do_LaMetric_state", "state", "1");;

   if ($state == 0) {
      fhem("set do_LaMetric_state 1");;
   }

   if ($state == 1) {
      $temp = strftime('%H:%M',localtime);;
      $icon = "none";;
      fhem("set LaMetric privatemsg $temp icon=$icon");;
      fhem("set do_LaMetric_state 2");;
   }

   if ($state == 2) {
      $temp = sprintf("%.1f",ReadingsVal("netatmo_outside","temperature",0))."°C";;
      $icon = LaMetricPushWeather(ReadingsVal("yahooWeather","code",0));;
      fhem("set LaMetric privatemsg $temp icon=$icon");;
      fhem("set do_LaMetric_state 3");;
   }

   if ($state == 3) {
      $temp = sprintf("%.1f",ReadingsVal("Heizung_WZ","temperature",0))."°C";;
      $icon = "i1299";;
      fhem("set LaMetric privatemsg $temp icon=$icon");;
      fhem("set do_LaMetric_state 1");;
    }
})


Beim DOIF musst du noch do always setzen.
Den aktuellen Status merke ich mir aktuell im DUMMY Device do_LaMetric_state

Die SONOS Integration kannst du dann über ein notify und set LaMetric msg [SONOS:Reading] machen.

Viele Grüße
Micha
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 24 Juli 2017, 19:19:35
Vielen Dank für die neue Version. Schade, dass es nun zwei Versionen gibt und jede etwas kann, das der anderen fehlt. :-(

Zitat von: Eragos am 24 Juli 2017, 18:00:52
* LaMetric_AppPushEndpoint => com.lametric.12345678901234567890123456789012/1
Der Anfang "com.lametric." ist konstant und könnte entfallen.
Das "/1" habe ich bewusst weg gelassen, da damit bei Updates nichts geändert werden muss.

Was mir nicht gefällt ist, dass ich damit nur eine App steuern kann und auf einen Frame begrenzt bin.

Viele Grüße
Manfred
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Thyraz am 25 Juli 2017, 08:52:57
Wie funktioniert das denn dann mit der App, zeigt die einfach die letzte Nachricht die zur App gepushed wurde dauerhaft an?

edit: Wenn man einen Tastendruck auf den mittleren Taster der Lametric in der private App auswerten wollte, würde das auf alle Fälle übers Internet gehen (Sprich man muss einen Port öffnen), oder geht das auch lokal?

edit2:
Mein Gedanken formen sich gerade erst so langsam. Sorry für die vielen Edits.

An sich gefällt mir die Idee mit der privaten App sehr gut.
Ich hatte im anderen LaMetric Modul ja die "Sticky" Messages eingebaut, welche auch eine Dauerhafte Anzeige ermöglichen.
Am DOIF Beispiel von Eragos sieht man ja aber sehr gut, dass man sowas auch auf Seiten FHEM mit einem DOIF über eine LaMetric App realisieren kann.
Seine Anzeige des Anrufes macht ja genau das: Anzeigen einer Message bis zu einem weiteren Event. Erst dann geht es wie gewohnt weiter.

Sah für mich auf den ersten Blick komplizierter aus, bietet aber eben auch mehr Flexibilität.
Zum Beispiel Eingehender Telefonanruf ist wichtiger als eine "Wäsche ist fertig" Meldung.
Oder bestimmte Anzeigen im Cycle länger anzeigen als andere.

Werde heute Mittag mal testweise auf dieses Modul umsteigen denk ich.

@ares wozu benötigst du denn mehr als einen Frame solang man den aktuellen Frame ja immer wieder neu beschreiben kann?
Oder hättest du gern verschiedene Frame-Typen?
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 25 Juli 2017, 11:47:06
Zitat von: Thyraz am 25 Juli 2017, 08:52:57
Wie funktioniert das denn dann mit der App, zeigt die einfach die letzte Nachricht die zur App gepushed wurde dauerhaft an?
Ja, Du bist aber nicht auf eine Nachricht beschränkt. Du kannst in fhem die Anzahl der Nachrichten (frames) auch SPÄTER noch aus fhem ändern und so z.B. mehrere Nachrichten wie in der Wetter-App von LaMetric anzeigen. Damit kannst Du eine eigene Wetter-App mit Werten Deiner Wahl aus fhem basteln und bist nicht auf die fertige Lösung angewiesen. Die App macht also Sinn, wenn es sich nicht um temporäre Einblendungen wie einen Telefonanruf handelt.
Falls Du den Wert lokal setzt hast Du den Nachteil, dass der aktuelle Wert verloren geht, das stört mich aber weniger als meine Daten übers Internet zu schicken.
Channel scheinen nur übers Internet zu funktionieren, so dass Du für die lokale Verwendung im Fall von Sonos pro Player eine App erstellen musst.

Zitat von: Thyraz am 25 Juli 2017, 08:52:57
Wenn man einen Tastendruck auf den mittleren Taster der Lametric in der private App auswerten wollte, würde das auf alle Fälle übers Internet gehen (Sprich man muss einen Port öffnen), oder geht das auch lokal?
Du kannst pro App einen Tastendruck definieren und auch einen lokalen Aufruf hinterlegen wie z.B. bei fest gesetztem Token in fhem:

http://192.168.123.123:8083/fhem?cmd=set%20Sonos_Wohnzimmer%20Pause&fwcsrf=csrf_1234567890ABCDEF&XHR=1


Zitat von: Thyraz am 25 Juli 2017, 08:52:57
Ich hatte im anderen LaMetric Modul ja die "Sticky" Messages eingebaut, welche auch eine Dauerhafte Anzeige ermöglichen.
Die "Sticky" Messages gefallen mir sehr gut, ich zeige das z.B. beim Trocknerende an und lasse die Meldung auch von fhem quittieren. Das ersetzt nicht die App, ausser Du hast nur eine und verzichtest sogar auf die hübsche Uhr.

Zitat von: Thyraz am 25 Juli 2017, 08:52:57
@ares wozu benötigst du denn mehr als einen Frame solang man den aktuellen Frame ja immer wieder neu beschreiben kann?
Damit die Lametric z.B. Temperatur und Luftfeuchtigkeit automatisch passend umschaltet.

Du kannst auch "notify" beim Einrichten am Smartphone setzen, dann wird bei Änderungen automat auf die App umgeschaltet, auch wenn diese gar nicht im automatischen Wechsel konfiguriert ist. Im Fall von Sonos zeigt er so den Titelwechsel bzw. Pause/Play kurz an, der Titel kann aber später bei Bedarf durch manuelles Wechseln der App nochmal angezeigt werden und über die über die Action-Taste hinterlegte Aktion ausgeführt werden, was bei Nachrichten ja nicht klappt. Mehr als eine App bedeutet auch, dass Du mehrere Aktionen auslösen kannst. Leider wird nicht zwischen kurzem und langen Tastendruck unterschieden.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Thyraz am 25 Juli 2017, 12:12:05
Ok, das mit der lokalen URL ist cool. :)

Ja, das mit "Alles-In-Einer-App" klappt tatsächlich nur, wenn man auf die Original Uhr verzichtet und die Zeitanzeige auch in den Cycle vom DOIF mit aufnimmt.

Ich zeige mir aber bei der Lametric bisher auch keine Sekunden an, da mich die Animation sonst oft ablenkt.
Bin daher evtl. gar nicht so undankbar wenn ich die Flip-Animation bei der Uhr nicht habe.

Temperatur innen/außen würde ich daher auch weit seltener aufrufen als nach 5 Sekunden denke ich (Dafür die Uhrzeit länger anzeigen).

Aber mit dem Reagieren auf Tastendruck könnte man das DOIF ja schön erweitern.
Wird eine Meldung wegen etwas bestimmten Ereignisses (Telefon/Wäsche/...) angezeigt, wird die Meldung durch den Tastendruck vorzeitig quittiert und man kehrt zum normalen Anzeigecycle zurück.
Wird hingegen während des normalen Cycles die Taste gedrückt, wechselt die Anzeige immer zum nächsten Screen. (Uhr -> Temp. Innen -> Temp. Außen --> usw.)

@Eragos: Wenn man die normale Uhr auch noch nutzen wollte, würde es evtl. schon reichen wenn du noch Befehle zum Wechseln zu einer bestimmten App einbauen würdest?
Gibt die API ja auch her, dann könnte man sein DOIF entsprechend erweitern.

edit: Zu Sonos mit nur einer App und einem Frame:
Man könnte das aktuelle Lied ja auch wie die Uhrzeit und Temperaturen im Cycle mit anzeigen um das jederzeit anschauen zu können.
Um beim Liedwechsel dennoch kurz den Titel zu sehen (egal was davor auf dem Screen war) könnte man den ja zusätzlich als Notification mit dem msg Befehl pushen.

Klar: Die Lösung mehrere Apps anzulegen und diese auch noch mit mehreren Frames auszustatten lässt sicher noch eine bessere Bedienung zu.
Gerade auch, da man nicht nur Apps direkt per API anzeigen, sondern auch zu bestimmten Frames darin springen kann.
Aber stellt sie die Frage wie man das Modulseitig umsetzt.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 25 Juli 2017, 13:05:44
Hast Du schon eine App erstellt und etwas damit gespielt? Ich denke, damit wird vieles klarer.

Zitat von: Thyraz am 25 Juli 2017, 12:12:05
Ja, das mit "Alles-In-Einer-App" klappt tatsächlich nur, wenn man auf die Original Uhr verzichtet und die Zeitanzeige auch in den Cycle vom DOIF mit aufnimmt.

Ich zeige mir aber bei der Lametric bisher auch keine Sekunden an, da mich die Animation sonst oft ablenkt.
Bin daher evtl. gar nicht so undankbar wenn ich die Flip-Animation bei der Uhr nicht habe.

Temperatur innen/außen würde ich daher auch weit seltener aufrufen als nach 5 Sekunden denke ich (Dafür die Uhrzeit länger anzeigen).

Die Sekunden zeige ich auch nicht an, mag aber die genaue Zeit, den blinkenden Doppelpunkt und die Flip-Animation. Und ich mag es, wenn die Uhr auch ohne fhem funktioniert!
Du kannst die Anzeige-Dauer für die Uhr auch doppelt oder dreimal so lange einstellen.

Zitat von: Thyraz am 25 Juli 2017, 12:12:05
Aber mit dem Reagieren auf Tastendruck könnte man das DOIF ja schön erweitern.
Wird eine Meldung wegen etwas bestimmten Ereignisses (Telefon/Wäsche/...) angezeigt, wird die Meldung durch den Tastendruck vorzeitig quittiert und man kehrt zum normalen Anzeigecycle zurück.
Die Meldungen würde ich weiter wie bisher anzeigen, diese müssen nicht über die App laufen. Die Wäsche wird bei mir ohne dauerhaft angezeigt und kann bereits quittiert werden.

Zitat von: Thyraz am 25 Juli 2017, 12:12:05
Wird hingegen während des normalen Cycles die Taste gedrückt, wechselt die Anzeige immer zum nächsten Screen. (Uhr -> Temp. Innen -> Temp. Außen --> usw.)
Mit mehreren Apps kannst Du sogar vor- und zurück springen und hast immer noch einen zusätzlichen Tastendruck zur Verfügung.


Zitat von: Thyraz am 25 Juli 2017, 12:12:05
@Eragos: Wenn man die normale Uhr auch noch nutzen wollte, würde es evtl. schon reichen wenn du noch Befehle zum Wechseln zu einer bestimmten App einbauen würdest?
Gibt die API ja auch her, dann könnte man sein DOIF entsprechend erweitern.
Das war mein erster Gedanke beim Liedwechsel und funktioniert auch wunderbar. Allerdings kannst Du das auch am Smartphone beim Konfigurieren der App einstellen und musst nicht extra programmieren. Du kannst sogar einen Sound beim Eintreffen neuer Nachrichten hinterlegen.

Zitat von: Thyraz am 25 Juli 2017, 12:12:05
edit: Zu Sonos mit nur einer App und einem Frame:
Man könnte das aktuelle Lied ja auch wie die Uhrzeit und Temperaturen im Cycle mit anzeigen um das jederzeit anschauen zu können.
Um beim Liedwechsel dennoch kurz den Titel zu sehen (egal was davor auf dem Screen war) könnte man den ja zusätzlich als Notification mit dem msg Befehl pushen.
Ich möchte das aber gar nicht im Wechsel sehen, wenn die Box nichts abspielt. Und nur mit einer eigenen App kannst Du zwischen Play und Pause wechseln.

Zitat von: Thyraz am 25 Juli 2017, 12:12:05
Klar: Die Lösung mehrere Apps anzulegen und diese auch noch mit mehreren Frames auszustatten lässt sicher noch eine bessere Bedienung zu.
Gerade auch, da man nicht nur Apps direkt per API anzeigen, sondern auch zu bestimmten Frames darin springen kann.
Aber stellt sie die Frage wie man das Modulseitig umsetzt.
Wie kann man zu bestimmten Frames springen? Den API-Aufruf habe ich nirgends gesehen.


Aus meiner Sicht kann man mit mehreren Apps (mit jeweils mehreren Frames) und zusätzlich Nachrichten mehr verschiedene Wünsche umsetzen, auch wenn nicht jeder alle Möglichkeiten nutzen möchte.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Thyraz am 25 Juli 2017, 14:48:56
nein, kam leider noch nicht dazu mit eigenen Apps zu spielen.
Ist für heute Abend eingeplant. ;)

Wie gesagt, mehrere Apps klingen cool. :)
Nur die Frage wie man das umsetzt.

Ne Idee die mir dazu:
Einen Aufbau ähnlich den zweistufigen Hardwaremodellen einiger FHEM Module.

Als Grundmodul das bestehende "LaMetric", welches Geräteadresse, Notifications, App-Wechsel, Lautstärke usw. verwaltet.
Ein weiteres Modul "LaMetricApp" von denen es mehrere geben kann?
Dadurch hätte man die Settings zur App und den jeweiligen Key etc. sauber als einzelne Devices in FHEM verwaltet.

Zum aktivieren einzelner Frames:
Die Frames sind doch das, was in der Dev-Doku Widgets genannt wird, oder?
Also bei der Uhr die 2 Screens für Uhrzeit und Datum, oder bei Netatmo die einzelnen Temperaturanzeigen.
http://lametric-documentation.readthedocs.io/en/latest/reference-docs/device-apps.html#activate-specific-widget

Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 25 Juli 2017, 15:18:31
Zitat von: Thyraz am 25 Juli 2017, 14:48:56
Die Frames sind doch das, was in der Dev-Doku Widgets genannt wird, oder?
Also bei der Uhr die 2 Screens für Uhrzeit und Datum, oder bei Netatmo die einzelnen Temperaturanzeigen.
Nein, die Uhr ist das Widget (App) und Uhrzeit und Datum sind die Frames. Du kannst auch über die Tasten an der LaMetric nicht die Datumsanzeige erzwingen sondern musst lange genug warten.
Zur Laufzeit kannst Du auch mehrere Frames in der Notification-App setzen, obwohl Du beim Erstellen nur einen Frame angegeben hast.
Alle Frames zusammen haben aber nur einen Button.

Probier es aus, dann wird das alles schnell klar.
Die Channel ignorierst Du bitte, so lange Du nicht über das Internet aktualisieren möchtest.
Und schalte die Uhr auch mal nach dem direkten Aktualisieren aus und wieder ein, Du bekommst dann den ursprünglich definierten Zustand bzw. den Inhalt der letzten Internet-Aktualisierung angezeigt.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Thyraz am 26 Juli 2017, 09:26:51
Ok, funktioniert einwandfrei.

@Eragos vielen Dank für die Umsetzung mit der Local App. :)
Gefällt mir weit besser als die Nachrichten mit einer Notification Queue durchrotieren zu müssen.
Ohne dein Beispiel-DOIF wäre mir das so gar nicht klar geworden.

Würdest du evtl. deine LaMetricPushWeather() Funktion teilen?

@ares danke auch für deine Tips, Umsetzung hat einwandfrei geklappt inkl. reagieren auf den Tastendruck in FHEM.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 26 Juli 2017, 10:06:39
Ich bin mir immer noch nicht sicher, ob eine App mit einem Frame ohne Standard-Apps wie die Uhr die sinnvollste Variante ist. Vielleicht sollte ich der Idee aber auch mal eine Chance geben.
Edit sagt: Unterschiedlich lange Texte sollte auch unterschiedlich lange angezeigt werden. Die Zeit regelt die Notification App bei mehreren Frames selbständig.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Eragos am 28 Juli 2017, 15:15:54
Zitat von: Thyraz am 26 Juli 2017, 09:26:51
Ok, funktioniert einwandfrei.

@Eragos vielen Dank für die Umsetzung mit der Local App. :)
Gefällt mir weit besser als die Nachrichten mit einer Notification Queue durchrotieren zu müssen.
Ohne dein Beispiel-DOIF wäre mir das so gar nicht klar geworden.

Würdest du evtl. deine LaMetricPushWeather() Funktion teilen?

@ares danke auch für deine Tips, Umsetzung hat einwandfrei geklappt inkl. reagieren auf den Tastendruck in FHEM.

Freut mich, dass es bei dir funktioniert.

Das Wetter holt er sich vom Weather Modul und ersetzt nur die Icons ins LaMetric Format der wichtigsten Werte hier bei mir. Hat also keinen Anspruch auf Vollständigkeit.


use Switch;
sub LaMetricPushWeather {
switch ($_[0]) {
case '3' { return "i820"; }
case '4' { return "i820"; }
case '5' { return "a160"; }
case '6' { return "a160"; }
case '7' { return "a160"; }
case '8' { return "a72"; }
case '9' { return "a72"; }
case '10' { return "a72"; }
case '11' { return "a72"; }
case '12' { return "a72"; }
case '13' { return "a1673"; }
case '14' { return "a1673"; }
case '15' { return "a1673"; }
case '16' { return "a1673"; }
case '18' { return "a2009"; }
case '19' { return "i2158"; }
case '20' { return "i2158"; }
case '22' { return "i2158"; }
case '26' { return "i91"; }
case '27' { return "i2152"; }
case '28' { return "i876"; }
case '29' { return "i2152"; }
case '30' { return "i876"; }
case '31' { return "i1465"; }
case '32' { return "i1532"; }
case '36' { return "i1532"; }
case '37' { return "i2157"; }
case '38' { return "i2157"; }
case '39' { return "i2157"; }
case '40' { return "a72"; }
case '41' { return "a1673"; }
case '42' { return "a160"; }
case '43' { return "a1673"; }
case '44' { return "i91"; }
case '45' { return "i2157"; }
case '46' { return "a160"; }
case '47' { return "i2157"; }
else { return "i2056"; }
}
}
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: mando667 am 05 August 2017, 10:32:13
Hallo zusammen,

im KNX-User-Forum gibt es einen umfangreichen Logikbaustein für die LaMetric Uhr. (https://service.knx-user-forum.de/?comm=download&id=19000801)

Evtl. lässt sich das Modul um die dort verwendeten Funktionen erweitern? Vor allem E25 (Radio: Steuerung) und E26 (Uhr: Wecker stellen) wären super ;)


Beste Grüße
Julian


E1: Starts (1) or Stops (0) the LBS
E2: Enable Logging (0-none|1-emerg|2-alert|3-crit|4-err|5-warning|6-notice|7-info|8-debug)
E3: IP adress of the lametric clock
E4: API Key - Can be downloaded at https://developer.lametric.com/user/devices, after you registered an account and logged in
E5: Icon + Notification Text - This triggers the LBS and the icon + notification will be shown on the clocks display.
Syntax: Icon:Text. If ':' is missing, entire String will be interpreted as text and no icon will be shown
E6: Shows a progress bar on the display. Syntax: start:current:end:unit, e.g. 1:60:100:% to show a progress bar 0-100% with progress of 60%
E7: Shows a chart with a certain number of vertical bars. Syntax: val1:val2:val3:...:valn, e.g. 10:30:20:40 to show 4 bars
E8: Notification type can be 'none', 'info' or 'alert'
E9: Sets the icon to be shown with the next notification text. Icons can be found here: https://developer.lametric.com/icons
sytax: i###, e.g. 'i95' is a lightning
E10: ID of sound to be played with the next notification. Possible sounds:
bicycle,car,cash,cat,dog,dog2,energy,knock-knock,letter_email,lose1,lose2,negative1,negative2,negative3,negative4,negative5,
notification,notification2,notification3,notification4,open_door,positive1,positive2,positive3,positive4,positive5,positive6,
statistic,thunder,water1,water2,win,win2,wind,wind_short,alarm1,alarm2,alarm3,alarm4,alarm5,alarm6,alarm7,alarm8,alarm9,
alarm10,alarm11,alarm12,alarm13
E11: specifies how often the sound will be repeated
E12: specified for how long a notification will be shown on the display. 0=>until confirmed by main button.
>0 means number of display cycle. one display cycle lasts some seconds
E13: Priority can be 'info', 'warning', 'critical'. A message with a higher priority will stop a currently displayed notification
with lower priority and it will overtake all other notifications with lower priority in the queue
E14: lifetime specifies in ms for how long a notification will live in the queue, even if it is not yet displayed.
After the lifetime exceeds the notification will be deleted even if it was not shown on the display.
E15: 0 - deletes the currently displayed notification. >0 delete the notification with the specified number if it exists
E16: Brightness can be adjusted between 0 and 100. Works only with brightness mode 'manual'
E17: Can be 'manual' or 'auto'. In auto mode brightness will be controlled by the device based on the brightness sensor
E18: adjusts the volume of the integrated speaker between 0 and 100
E19: Switches the bluetooth on (1) or off (0). Bluetooth icon will be shown in the display
E20: sets the bluetooth name, which will be visible if bluetooth is activated on E19
E21: triggers an update of all outputs A2-A15
E22: Activates a specific app. Naming convention of apps ist com.lametric.#APP-Name#.
You have to specify the #APP-Name# here to activate the app, e.g. 'clock' activates the built-in app com.lametric.clock
E23: Switches to the next app (same a right button click on the lametric device)
E24: Switches to the previous app (same a left button click on the lametric device)
E25: Activates the radio app and executed the command sent to this input. Possible commands: play, stop, next, prev  
E26: Activates the clock app. To set the alarm you have to send the format HH:MM or HH:MM:SS to E26.
E27: Activates the timer app. To set the timer to x seconds, you have to send x to E27.
E28: Activates the stopwatch app and executes the command sent to this input. Possible commands: start, pause, reset
E28: Activates the weather app and executes the command sent to this input. Possible commands: forecast

A1: Result of the last command. 'SUCCESS', 'ERROR' or 'UNKNOWN'
A2: Level of brightness: 0-100
A3: Brightness mode: 'auto' or 'manual'
A4: Current volume level: 0-100
A5: Bluetooth status: 0-off 1-on
A6: Bluetooth name
A7: |-separated list of active notifications id's in the queue
A8: ID of the LaMetric device
A9: Name of the LaMetric device
A10: Serial Number of the LaMetric device
A11: OS Version (Firmware) of the LaMetric device
A12: Mode of the LaMetric device
A13: Model of the LaMetric device
A14: Wifi signal strength of the LaMetric device
A15: Status of the screensaver: 1-enabled, 0-disabled (1 does not mean that the screensaver is currently active)
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 05 August 2017, 11:09:48
Zitat von: mando667 am 05 August 2017, 10:32:13
im KNX-User-Forum gibt es einen umfangreichen Logikbaustein für die LaMetric Uhr. (https://service.knx-user-forum.de/?comm=download&id=19000801)
Evtl. lässt sich das Modul um die dort verwendeten Funktionen erweitern? Vor allem E25 (Radio: Steuerung) und E26 (Uhr: Wecker stellen) wären super ;)

Die Funktionen werden durch die API angeboten:
http://lametric-documentation.readthedocs.io/en/latest/reference-docs/device-apps.html#id11 (http://lametric-documentation.readthedocs.io/en/latest/reference-docs/device-apps.html#id11)

Generell kannst Du alles mit HttpUtils_NonblockingGet steuern falls Du nicht auf ein Modul warten möchtest bzw. keines selber erstellen möchtest. Beispiel:
https://forum.fhem.de/index.php/topic,74221.msg663245.html#msg663245 (https://forum.fhem.de/index.php/topic,74221.msg663245.html#msg663245)

Den Wecker kannst Du auch über fhem steuern und trotzdem den Radio der Uhr auslösen:
https://forum.fhem.de/index.php/topic,62992.0.html (https://forum.fhem.de/index.php/topic,62992.0.html)
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: mando667 am 05 August 2017, 12:18:09
Danke, werde ich mir mal anschauen.

Wie lässt sich über das Modul der Radio aktivieren?


Gesendet von iPad mit Tapatalk
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: ares am 05 August 2017, 13:30:00
Zitat von: mando667 am 05 August 2017, 12:18:09
Wie lässt sich über das Modul der Radio aktivieren?

Wie in der API http://lametric-documentation.readthedocs.io/en/latest/reference-docs/device-apps.html#id14 (http://lametric-documentation.readthedocs.io/en/latest/reference-docs/device-apps.html#id14) beschrieben.
Zitatradio.play - start playback
radio.stop - stop playback
radio.next - next radio station
radio.prev - previous radio station

Versuch zum Test folgendes in fhem einzugeben.
Ersetze lokale IP: 192.168.123.123
Ersetze API-Key: 123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123a
{HttpUtils_NonblockingGet({url => 'https://192.168.123.123:4343/api/v2/device/apps/com.lametric.radio/widgets/589ed1b3fcdaa5180bf4848e55ba8061/actions', data => '{"id":"radio.play"}', method => "POST", auth => "dev:123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123a", callback => sub(){}})}

Du kannst damit natürlich auch direkt den Wecker setzen.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: rufus999 am 28 März 2018, 18:34:15
Hallo zusammen,

kann jemand helfen?
Ich nutze dieses Modul bekomme aber keine Messages auf der Clock angezeigt. Als Fehler kommt immer unauthorized?!

Internals:
   APIKEY     longapikeyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   CHANGED   
   DEF        192.168.XXX.XXX longapikeyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   HOST       192.168.XXX.XXX
   NAME       LaMetric
   NR         526
   STATE      ???
   TYPE       LaMetric
   READINGS:
     2018-03-28 18:16:41   lastIcon        i620
     2018-03-28 18:16:41   lastMessage     Ein Test von XXX
     2018-03-28 18:16:41   lastResult      401 Unauthorized
     2018-03-28 18:16:41   lastSound       notification
Attributes:
   room       Display

Den apikey habe ich von der developer-lametric site.

Bitte um Info wenn Ihr noch weitere logs oder Infos benötigt.

Dank und Gruß

rufus999
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Thyraz am 26 Mai 2018, 21:46:55
Gerade gemerkt, dass der msg Befehl bei mir auch nicht mehr will.
Nutze an sich nur den privatemsg Befehl und der funktioniert einwandfrei.

Werde die Tage mal schauen ob ich rausfinde woran es liegt.

Über curl kann ich von der Konsole aus problemlos Nachrichten an die LaMetric schicken.
Somit sollte das im Modul ja auch recht einfach zu fixen sein.
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: Thyraz am 29 Mai 2018, 23:01:43
Ok, das Problem liegt in der Änderung hier:
https://forum.fhem.de/index.php?topic=80412.0

User/Passwort wurde im Modul bisher in $param->{auth} geliefert.
Das wird von FHEM nun für was anderes verwendet und man muss es in $param->{user} und $param->{pwd} splitten.

Daher im Modul alle Stellen mit:

auth        => "dev". $hash->{APIKEY},


ersetzen durch:

user        => "dev",
pwd         => $hash->{APIKEY},


Danach sollte es wieder laufen. :)
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: rufus999 am 06 Juni 2018, 13:35:41
Hallo Thyraz,

super vielen Dank für deine Hilfe. Das schau ich mir Heute Abend gleich mal.
Ich gebe dann Rückmeldung.

Danke rufus999
Titel: Antw:[Neues Modul] LaMetric
Beitrag von: rufus999 am 07 Juni 2018, 19:00:23
Hallo Thyraz,

sorry hat etwas gedauert. Aber es läuft!  :D

Vielen Dank dafür!

Gruß rufus999