[Neues Modul] 70_LaMetric2.pm für LaMetric Smart Clock

Begonnen von Loredo, 01 Dezember 2018, 18:40:25

Vorheriges Thema - Nächstes Thema

siggi85

Zitat von: Thyraz am 19 Februar 2019, 08:56:09
Freut mich. :)

Kleine Idee zur Sache mit dem Devicemode:
Man kann die Uhr ja an sich im "Eine App anzeigen" Modus lassen und die Apps über die API wechseln.

Klar, ist etwas umständlicher zu programmieren, da man ein zyklisches AT oder ein wiederholendes DOIF braucht.
Aber man, man könnte z.B. bestimmte Apps länger darstellen als andere, oder die Uhr jedesmal zwischen den anderen Apps zeigen.

Also z.B:
- Uhr 5s
- Wetter 2s
- Uhr 5s
- Innentemperatur 2s
- Uhr 5s
- ...

Habe auch schon überlegt sowas zu bauen. Dann könnte ich im Falle, dass ich einen Film gucke, diesen "eigenen Wechsel-Modus" deaktivieren und die Uhr lassen, und sobald der Film fertig ist den Modus kurz danach wieder aktivieren lassen.
Da ich kurz vor unserem Umzug stehe, lasse ich das erst Mal wie es ist, aber ggf. werde ich das die nächsten Wochen so umsetzen. :)

Mickey

#46
STOP war mein Fehler, war e nicht !

Hallo,

die Fehlermeldung im Log kommt vermutlich vom Modul:

PERL WARNING: Argument "???" isn't numeric in addition (+) at (eval 33651) line 1.

Und zwar: Bei der Abfrage der Wifi wifiStrength. Bei mir steht 100

Kann das bitte einmal geprüft werden?

Danke, Michael
Zu mir:
Ich bin leider fast blind (EU Rentner) und nicht zu "faul" was nachzulesen. Bitte seht mir nach, wenn ich einmal zu viel frage oder auch mal Schreibfehler mache. Danke, Michael

siggi85

#47
Zitat von: Thyraz am 24 Januar 2019, 10:26:33
Kleiner Tip falls jemand an die Original Icons ran muss:

Einfach im Browser die URL nach dem Schema aufbauen:

https://developer.lametric.com/content/apps/icon_thumbs/34.png
https://developer.lametric.com/content/apps/icon_thumbs/87.gif


Die Icon Nummer einfach ohne "a" bzw. "i" davor verwenden.

Damit kann man vorhandene Icons runterladen und editieren bzw. einfach in base64 umwandeln womit sie auch offline verfügbar sind.
Außerdem muss man soweit ich weiß die Variante verwenden, wenn man Icons für die IUhranzeige festlegen will wie in der Commandref beschrieben:


set lametric app clock clockface icon='data:image/png;;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAOklEQVQYlWNUVFBgwAeYcEncv//gP04FMEmsCmCSiooKjHAFMEF0SRQTsEnCFcAE0SUZGBgYGAl5EwA+6RhuHb9bggAAAABJRU5ErkJggg=='


Ich verwende das z.B. um nach einer einmaligen Notification mit Sound und Text bei bestimmten Erinnerungen das Icon weiter in der Uhranzeige darzustellen.

Zum Beispiel das Waschmaschinen-Icon wenn die Wäsche fertig ist, oder ein Fenster-Icon wenn Fenster schon länger geöffnet sind und es draußen kalt ist.
Das Icon wird dann eben wieder aus der Uhranzeige gelöscht, sobald die Waschmaschine ausgeschaltet / neu gestartet oder das Fenster geschlossen wird.

Noch Mal danke für diese Infos! Ich habe mir damit mittlerweile ein System gebaut, indem ich mehrere Icons hinschicken kann (Klingel, Haustür auf, Fenster, Waschmaschiene, Trockner, Post, etc.), die alle eine unterschiedliche Priorität haben. D.h. Wenn ein Zustand eintrifft der ggf. ein Icon auf der Uhr anzeigen soll, wird immer das Icon mit der höchsten Priorität angezeigt. Und wenn der Zustand sich wieder ändert, wird neu evaluiert und nicht blindlinks das aktuelle Icon gelöscht.

Ich habe die Logik zwar in ioBroker umgesetzt und nutze FHEM nur zur Ausführung, aber das kann man sicher auch in FHEM mit Dummys umsetzen.
Für jedes potentielle Icon ein dummy erstellen, diesen dann im jeweiligen Fall auf true oder false setzen. Einen Notify bauen, der reagiert wenn einer der Dummys geändert wird. Hier dann einen dieser Dummys nach dem anderen Abfragen ob er auf true steht und dann das zugehörige Icon mit der von Thyraz beschriebenen Methode setzen. Hier steht die Reihenfolge der Abfrage dann für die Priorität. Falls alle auf false stehen, wird das Icon einfach mit "icon=" gelöscht.
In den anderen Skripten die die verschiedenen Zustände auslösen oder beenden sollen, einfach den jeweiligen Icon-dummy auf true oder false setzen, den Rest erledigt der beschriebene Notify.

Praktisches Beispiel: Die Haustür geht auf und ein "Warnsymbol" wird auf der Lametric angezeigt. Kurz danach wird die Waschmaschiene fertig, das Symbol bleibt aber dank der Priorisierung auf "Warnsymbol". Sobald die Haustür geschlossen wird, erscheint das "Waschmaschienen" Symbol auf der Lametric.

Umso mehr Icons man sich in verschiedenen Situationen anzeigen lassen möchte, umso mehr macht sowas Sinn. Hoffe die Erklärung war halbwegs verständlich. Ich bin jedenfalls mega zufrieden damit. :)

Thyraz

Falls jemand noch eine kaufen will, gerade kam ein 20% (also wohl 40€) Gutscheincode vom Lametric Newsletter rein.
Wenn ich das recht sehe, wäre der Preis dann 159€.
Gilt 2 Wochen, keine Ahnung ob mehrfach verwendbar.


19563EFC
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

stoxx

Hi, erstmal vielen Dank für das Modul. Funktioniert bisher bestens bis auf eine Sache: Wenn ich versuche, im Bildschirmschoner- Modus eine App aufzurufen, passiert nichts - auch wenn ich priority=critical mitgebe.
z.B.
Zitatset lametric app FHEM push token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx== Hallo priority=critical
Ich habe alles wie hier gemacht, nutze aber nicht die Utils sondern das Modul:
https://www.youtube.com/watch?v=jgqJqv58HGI
Vielleicht hat ja jemand  ;) eine Idee,
grüße
stoxx
FHEM 5.8 auf Raspberry mit CUL, FS20, FHT, HMS, BLE, Z-Wave ..

siggi85

Zitat von: stoxx am 19 April 2020, 22:27:38
Hi, erstmal vielen Dank für das Modul. Funktioniert bisher bestens bis auf eine Sache: Wenn ich versuche, im Bildschirmschoner- Modus eine App aufzurufen, passiert nichts - auch wenn ich priority=critical mitgebe.
z.B.Ich habe alles wie hier gemacht, nutze aber nicht die Utils sondern das Modul:
https://www.youtube.com/watch?v=jgqJqv58HGI
Vielleicht hat ja jemand  ;) eine Idee,
grüße
stoxx

Nach deiner Schilderung vermute ich, dass es nicht geht im Screensaver Modus eine App aufzurufen. (selber nicht getestet)
Aber vielleicht könntest du den Screensaver deaktivieren, bevor du die App aufruftst? Vorher solltest du dir den aktuellen Zustand des Screensavers über das entsprechende Reading speichern und nach einer von dir definierten Zeitspanne den letzten Screensaver Modus wiederherstellen.

tatu123

#51
Hallo zusammen,

ich wollte gerade meine Lametric wie hier im Forum beschrieben und auch in der Comref das Icon der clock zur Signalisierung benutzen.
Hierzu habe ich das Beispiel aus der comref genommen


set lametric app clock clockface icon='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAOklEQVQYlWNUVFBgwAeYcEncv//gP04FMEmsCmCSiooKjHAFMEF0SRQTsEnCFcAE0SUZGBgYGAl5EwA+6RhuHb9bggAAAABJRU5ErkJggg=='


Leider tut sich gar nichts. hat sich da was geändert?

Im Log bekomme ich mit Verbos 5 folgende Ausgabe:


2020.05.15 17:05:58 5: LaMetric2 lametric: called function LaMetric2_SendCommand()
2020.05.15 17:05:58 5: LaMetric2 lametric: GET https://192.168.178.84:4343/api/v2/device/apps? (DATA:  (noshutdown=1)
2020.05.15 17:05:58 5: LaMetric2 lametric: called function LaMetric2_SendCommand()
2020.05.15 17:05:58 5: LaMetric2 lametric: GET https://192.168.178.84:4343/api/v2/device/display? (DATA:  (noshutdown=1)
2020.05.15 17:05:58 5: LaMetric2 lametric: called function LaMetric2_ReceiveCommand() for service 'device/apps':

ERROR:
HTTP RESPONSE HEADER:
HTTP/1.1 200 OK
CONTENT-TYPE: application/json;charset=UTF8
Access-Control-Allow-Origin: *
Connection: close
Transfer-Encoding: chunked
Date: Fri, 15 May 2020 15:05:56 GMT
Server: lighttpd/1.4.35

HTTP RESPONSE BODY:
{ "com.lametric.clock" : { "actions" : { "clock.alarm" : { "enabled" : { "data_type" : "bool", "name" : "enabled", "required" : false }, "time" : { "data_type" : "string", "format" : "[0-9]{2}:[0-9]{2}(?::[0-9]{2})?", "name" : "time", "required" : false }, "wake_with_radio" : { "data_type" : "bool", "name" : "wake_with_radio", "required" : false } }, "clock.clockface" : { "icon" : { "data_type" : "string", "name" : "icon", "required" : false }, "type" : { "data_type" : "string", "format" : "weather|page_a_day|custom|none", "name" : "type", "required" : false } } }, "package" : "com.lametric.clock", "title" : "Clock", "triggers" : { "alarm" : { "snooze" : { "data_type" : "bool", "name" : "snooze" } } }, "vendor" : "LaMetric", "version" : "2.2.13", "version_code" : "50", "widgets" : { "08b8eac21074f8f7e5a29f2855ba8060" : { "index" : 0, "package" : "com.lametric.clock", "settings" : { "_title" : "Uhr" } } } }, "com.lametric.countdown" : { "actions" : { "countdown.configure" : { "duration" : { "data_type" : "int", "name" : "duration", "required" : false }, "start_now" : { "data_type" : "bool", "name" : "start_now", "required" : false } }, "countdown.pause" : {  }, "countdown.reset" : {  }, "countdown.start" : {  } }, "package" : "com.lametric.countdown", "title" : "\u0422\u0430\u0439\u043c\u0435\u0440", "triggers" : { "finished" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "paused" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "reset" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "resumed" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "started" : { "duration" : { "data_type" : "int", "name" : "duration" } } }, "vendor" : "LaMetric", "version" : "1.0.9", "version_code" : "15", "widgets" : { "f03ea1ae1ae5f85b390b460f55ba8061" : { "index" : 4, "package" : "com.lametric.countdown" } } }, "com.lametric.radio" : { "actions" : { "radio.next" : {  }, "radio.play" : {  }, "radio.prev" : {  }, "radio.state" : {  }, "radio.stop" : {  } }, "package" : "com.lametric.radio", "title" : "Radio", "triggers" : {  }, "vendor" : "LaMetric", "version" : "1.0.20", "version_code" : "32", "widgets" : { "589ed1b3fcdaa5180bf4848e55ba8061" : { "index" : 2, "package" : "com.lametric.radio" } } }, "com.lametric.stopwatch" : { "actions" : { "stopwatch.pause" : {  }, "stopwatch.reset" : {  }, "stopwatch.start" : {  } }, "package" : "com.lametric.stopwatch", "title" : "Stopwatch", "triggers" : {  }, "vendor" : "LaMetric", "version" : "1.0.6", "version_code" : "12", "widgets" : { "b1166a6059640bf76b9dfe0455ba8062" : { "index" : -1, "package" : "com.lametric.stopwatch" } } }, "com.lametric.weather" : { "actions" : { "weather.forecast" : {  }, "weather.get.cc" : {  } }, "package" : "com.lametric.weather", "title" : "Weather", "triggers" : {  }, "vendor" : "LaMetric", "version" : "1.0.12", "version_code" : "20", "widgets" : { "380375c4b12c16e3adafb48355ba8061" : { "index" : 1, "package" : "com.lametric.weather", "settings" : { "_title" : "Wetter" } } } } }
2020.05.15 17:05:59 5: LaMetric2 lametric: called function LaMetric2_ReceiveCommand() for service 'device/display':

ERROR:
HTTP RESPONSE HEADER:
HTTP/1.1 200 OK
CONTENT-TYPE: application/json;charset=UTF8
Access-Control-Allow-Origin: *
Connection: close
Transfer-Encoding: chunked
Date: Fri, 15 May 2020 15:05:56 GMT
Server: lighttpd/1.4.35

HTTP RESPONSE BODY:
{ "brightness" : 11, "brightness_limit" : { "max" : 100, "min" : 2 }, "brightness_mode" : "auto", "brightness_range" : { "max" : 100, "min" : 0 }, "height" : 8, "screensaver" : { "enabled" : false, "modes" : { "time_based" : { "enabled" : false, "end_time" : "03:45:00", "local_end_time" : "05:45:00", "local_start_time" : "22:00:00", "start_time" : "20:00:00" }, "when_dark" : { "enabled" : false } }, "widget" : "08b8eac21074f8f7e5a29f2855ba8060" }, "type" : "mixed", "width" : 37 }
2020.05.15 17:06:47 5: LaMetric2 lametric: called function LaMetric2_SetApp() app / clockface
2020.05.15 17:06:58 5: LaMetric2 lametric: called function LaMetric2_CheckState()
2020.05.15 17:06:58 5: LaMetric2 lametric: called function LaMetric2_SendCommand()
2020.05.15 17:06:58 5: LaMetric2 lametric: GET https://192.168.178.84:4343/api/v2/device?fields=name,serial_number,os_version,mode,model,audio,bluetooth,wifi (DATA:  (noshutdown=1)
2020.05.15 17:06:58 5: LaMetric2 lametric: called function LaMetric2_ReceiveCommand() for service 'device':

ERROR:
HTTP RESPONSE HEADER:
HTTP/1.1 200 OK
CONTENT-TYPE: application/json;charset=UTF8
Access-Control-Allow-Origin: *
Connection: close
Transfer-Encoding: chunked
Date: Fri, 15 May 2020 15:06:56 GMT
Server: lighttpd/1.4.35

HTTP RESPONSE BODY:
{ "audio" : { "volume" : 100, "volume_limit" : { "max" : 100, "min" : 0 }, "volume_range" : { "max" : 100, "min" : 0 } }, "bluetooth" : { "active" : false, "address" : "18:BB:26:43:FC:50", "available" : true, "discoverable" : true, "low_energy" : { "active" : true, "advertising" : true, "connectable" : true }, "name" : "LM5783", "pairable" : true }, "mode" : "schedule", "model" : "LM 37X8", "name" : "My LaMetric", "os_version" : "2.0.26", "serial_number" : "SA180903578300W00BS9", "wifi" : { "active" : true, "address" : "18:BB:26:43:D6:0A", "available" : true, "encryption" : "WPA", "essid" : "hk2", "ip" : "192.168.178.84", "mode" : "dhcp", "netmask" : "255.255.255.0", "strength" : 58 } }
2020.05.15 17:06:58 5: LaMetric2 lametric: called function LaMetric2_SendCommand()
2020.05.15 17:06:58 5: LaMetric2 lametric: GET https://192.168.178.84:4343/api/v2/device/apps? (DATA:  (noshutdown=1)
2020.05.15 17:06:58 5: LaMetric2 lametric: called function LaMetric2_SendCommand()
2020.05.15 17:06:58 5: LaMetric2 lametric: GET https://192.168.178.84:4343/api/v2/device/display? (DATA:  (noshutdown=1)
2020.05.15 17:06:58 5: LaMetric2 lametric: called function LaMetric2_ReceiveCommand() for service 'device/apps':

ERROR:
HTTP RESPONSE HEADER:
HTTP/1.1 200 OK
CONTENT-TYPE: application/json;charset=UTF8
Access-Control-Allow-Origin: *
Connection: close
Transfer-Encoding: chunked
Date: Fri, 15 May 2020 15:06:56 GMT
Server: lighttpd/1.4.35

HTTP RESPONSE BODY:
{ "com.lametric.clock" : { "actions" : { "clock.alarm" : { "enabled" : { "data_type" : "bool", "name" : "enabled", "required" : false }, "time" : { "data_type" : "string", "format" : "[0-9]{2}:[0-9]{2}(?::[0-9]{2})?", "name" : "time", "required" : false }, "wake_with_radio" : { "data_type" : "bool", "name" : "wake_with_radio", "required" : false } }, "clock.clockface" : { "icon" : { "data_type" : "string", "name" : "icon", "required" : false }, "type" : { "data_type" : "string", "format" : "weather|page_a_day|custom|none", "name" : "type", "required" : false } } }, "package" : "com.lametric.clock", "title" : "Clock", "triggers" : { "alarm" : { "snooze" : { "data_type" : "bool", "name" : "snooze" } } }, "vendor" : "LaMetric", "version" : "2.2.13", "version_code" : "50", "widgets" : { "08b8eac21074f8f7e5a29f2855ba8060" : { "index" : 0, "package" : "com.lametric.clock", "settings" : { "_title" : "Uhr" } } } }, "com.lametric.countdown" : { "actions" : { "countdown.configure" : { "duration" : { "data_type" : "int", "name" : "duration", "required" : false }, "start_now" : { "data_type" : "bool", "name" : "start_now", "required" : false } }, "countdown.pause" : {  }, "countdown.reset" : {  }, "countdown.start" : {  } }, "package" : "com.lametric.countdown", "title" : "\u0422\u0430\u0439\u043c\u0435\u0440", "triggers" : { "finished" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "paused" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "reset" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "resumed" : { "duration" : { "data_type" : "int", "name" : "duration" } }, "started" : { "duration" : { "data_type" : "int", "name" : "duration" } } }, "vendor" : "LaMetric", "version" : "1.0.9", "version_code" : "15", "widgets" : { "f03ea1ae1ae5f85b390b460f55ba8061" : { "index" : 4, "package" : "com.lametric.countdown" } } }, "com.lametric.radio" : { "actions" : { "radio.next" : {  }, "radio.play" : {  }, "radio.prev" : {  }, "radio.state" : {  }, "radio.stop" : {  } }, "package" : "com.lametric.radio", "title" : "Radio", "triggers" : {  }, "vendor" : "LaMetric", "version" : "1.0.20", "version_code" : "32", "widgets" : { "589ed1b3fcdaa5180bf4848e55ba8061" : { "index" : 2, "package" : "com.lametric.radio" } } }, "com.lametric.stopwatch" : { "actions" : { "stopwatch.pause" : {  }, "stopwatch.reset" : {  }, "stopwatch.start" : {  } }, "package" : "com.lametric.stopwatch", "title" : "Stopwatch", "triggers" : {  }, "vendor" : "LaMetric", "version" : "1.0.6", "version_code" : "12", "widgets" : { "b1166a6059640bf76b9dfe0455ba8062" : { "index" : -1, "package" : "com.lametric.stopwatch" } } }, "com.lametric.weather" : { "actions" : { "weather.forecast" : {  }, "weather.get.cc" : {  } }, "package" : "com.lametric.weather", "title" : "Weather", "triggers" : {  }, "vendor" : "LaMetric", "version" : "1.0.12", "version_code" : "20", "widgets" : { "380375c4b12c16e3adafb48355ba8061" : { "index" : 1, "package" : "com.lametric.weather", "settings" : { "_title" : "Wetter" } } } } }
2020.05.15 17:06:59 5: LaMetric2 lametric: called function LaMetric2_ReceiveCommand() for service 'device/display':

ERROR:
HTTP RESPONSE HEADER:
HTTP/1.1 200 OK
CONTENT-TYPE: application/json;charset=UTF8
Access-Control-Allow-Origin: *
Connection: close
Transfer-Encoding: chunked
Date: Fri, 15 May 2020 15:06:56 GMT
Server: lighttpd/1.4.35

HTTP RESPONSE BODY:
{ "brightness" : 11, "brightness_limit" : { "max" : 100, "min" : 2 }, "brightness_mode" : "auto", "brightness_range" : { "max" : 100, "min" : 0 }, "height" : 8, "screensaver" : { "enabled" : false, "modes" : { "time_based" : { "enabled" : false, "end_time" : "03:45:00", "local_end_time" : "05:45:00", "local_start_time" : "22:00:00", "start_time" : "20:00:00" }, "when_dark" : { "enabled" : false } }, "widget" : "08b8eac21074f8f7e5a29f2855ba8060" }, "type" : "mixed", "width" : 37 }
2020.05.15 17:07:09 4: HMCCU: [d_ccu : 5167] Build URL = http://192.168.178.36:2001
2020.05.15 17:07:17 5: LaMetric2 lametric: called function LaMetric2_SetApp() app / clock
2020.05.15 17:07:17 5: LaMetric2 lametric: called function LaMetric2_SendCommand()
2020.05.15 17:07:17 5: LaMetric2 lametric: POST https://192.168.178.84:4343/api/v2/device/apps/com.lametric.clock/widgets/08b8eac21074f8f7e5a29f2855ba8060/actions (DATA: {"id":"clock.clockface","params":{"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAOklEQVQYlWNUVFBgwAeYcEncv//gP04FMEmsCmCSiooKjHAFMEF0SRQTsEnCFcAE0SUZGBgYGAl5EwA+6RhuHb9bggAAAABJRU5ErkJggg=="}} (noshutdown=1)
2020.05.15 17:07:17 5: LaMetric2 lametric: called function LaMetric2_ReceiveCommand() for service 'device/apps/com.lametric.clock/widgets/08b8eac21074f8f7e5a29f2855ba8060/actions':

ERROR:
HTTP RESPONSE HEADER:
HTTP/1.1 201 Created
CONTENT-TYPE: application/json;charset=UTF8
Access-Control-Allow-Origin: *
Connection: close
Transfer-Encoding: chunked
Date: Fri, 15 May 2020 15:07:15 GMT
Server: lighttpd/1.4.35

HTTP RESPONSE BODY:
{ "success" : { "data" : {  }, "path" : "/api/v2/device/apps/com.lametric.clock/widgets/08b8eac21074f8f7e5a29f2855ba8060/actions" } }


Der Vollständigkeit halber noch ein List vom Device


Internals:
   CFGFN     
   DEF        192.168.178.84 <geschwärzt>
   FUUID      5ebc3da6-f33f-638b-18ed-2ba194155bb7959f
   FVERSION   70_LaMetric2.pm:v2.3.3-s19708/2019-06-25
   HOST       192.168.178.84
   INTERVAL   60
   MODEL      LM 37X8
   NAME       lametric
   NR         112003
   PORT       4343
   STATE      on
   TYPE       LaMetric2
   VERSION    v2.1.0
   Helper:
     DBLOG:
       bluetooth:
         logdb:
           TIME       1589394856.61014
           VALUE      off
       bluetoothAddress:
         logdb:
           TIME       1589394856.61014
           VALUE      18:BB:26:43:FC:50
       bluetoothAvailable:
         logdb:
           TIME       1589394856.61014
           VALUE      1
       bluetoothDiscoverable:
         logdb:
           TIME       1589394856.61014
           VALUE      1
       bluetoothName:
         logdb:
           TIME       1589394856.61014
           VALUE      LM5783
       bluetoothPairable:
         logdb:
           TIME       1589394856.61014
           VALUE      1
       brightness:
         logdb:
           TIME       1589480020.64366
           VALUE      11
       brightnessMode:
         logdb:
           TIME       1589394856.95459
           VALUE      auto
       deviceMode:
         logdb:
           TIME       1589397076.96989
           VALUE      schedule
       deviceName:
         logdb:
           TIME       1589394856.61014
           VALUE      My LaMetric
       deviceOsVersion:
         logdb:
           TIME       1589394856.61014
           VALUE      2.0.26
       deviceSerialNumber:
         logdb:
           TIME       1589394856.61014
           VALUE      <geschwärzt>
       lastCommand:
         logdb:
           TIME       1589552080.71702
           VALUE      device/apps/com.lametric.clock/widgets/08b8eac21074f8f7e5a29f2855ba8060/actions (POST)
       lastCommandResult:
         logdb:
           TIME       1589552080.71702
           VALUE      { "success" : { "data" : {  }, "path" : "/api/v2/device/apps/com.lametric.clock/widgets/08b8eac21074f8f7e5a29f2855ba8060/actions" } }
       lastMessage:
         logdb:
           TIME       1589475156.04373
           VALUE      test
       lastNotificationIconType:
         logdb:
           TIME       1589475156.04373
           VALUE      info
       lastNotificationLifetime:
         logdb:
           TIME       1589475156.04373
           VALUE      120
       lastNotificationPriority:
         logdb:
           TIME       1589475156.04373
           VALUE      info
       lastNotificationSound:
         logdb:
           TIME       1589475156.04373
           VALUE      off
       lastNotificationTitle:
         logdb:
           TIME       1589475156.04373
           VALUE     
       lastNotificationType:
         logdb:
           TIME       1589475156.04373
           VALUE      msg
       mute:
         logdb:
           TIME       1589394856.61014
           VALUE      off
       power:
         logdb:
           TIME       1589471487.23546
           VALUE      on
       presence:
         logdb:
           TIME       1589394856.61014
           VALUE      present
       screensaver:
         logdb:
           TIME       1589480020.64366
           VALUE      off
       screensaverEndTime:
         logdb:
           TIME       1589471487.23546
           VALUE      04:45:00
       screensaverStartTime:
         logdb:
           TIME       1589471487.23546
           VALUE      21:00:00
       state:
         logdb:
           TIME       1589552080.23445
           VALUE      app clock clockface icon='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAOklEQVQYlWNUVFBgwAeYcEncv//gP04FMEmsCmCSiooKjHAFMEF0SRQTsEnCFcAE0SUZGBgYGAl5EwA+6RhuHb9bggAAAABJRU5ErkJggg=='
       stateAV:
         logdb:
           TIME       1589471487.23546
           VALUE      on
       volume:
         logdb:
           TIME       1589394856.61014
           VALUE      100
       wifiActive:
         logdb:
           TIME       1589394856.61014
           VALUE      1
       wifiAddress:
         logdb:
           TIME       1589394856.61014
           VALUE      <geschwärzt>
       wifiAvailable:
         logdb:
           TIME       1589394856.61014
           VALUE      1
       wifiEncryption:
         logdb:
           TIME       1589394856.61014
           VALUE      WPA
       wifiEssid:
         logdb:
           TIME       1589394856.61014
           VALUE      <geschwärzt>
       wifiIp:
         logdb:
           TIME       1589394856.61014
           VALUE      192.168.178.84
       wifiMode:
         logdb:
           TIME       1589394856.61014
           VALUE      dhcp
       wifiNetmask:
         logdb:
           TIME       1589394856.61014
           VALUE      255.255.255.0
       wifiStrength:
         logdb:
           TIME       1589552518.11889
           VALUE      52
   READINGS:
     2020-05-13 20:34:16   bluetooth       off
     2020-05-13 20:34:16   bluetoothAddress 18:BB:26:43:FC:50
     2020-05-13 20:34:16   bluetoothAvailable 1
     2020-05-13 20:34:16   bluetoothDiscoverable 1
     2020-05-13 20:34:16   bluetoothName   LM5783
     2020-05-13 20:34:16   bluetoothPairable 1
     2020-05-14 20:13:40   brightness      11
     2020-05-13 20:34:16   brightnessMode  auto
     2020-05-13 21:11:16   deviceMode      schedule
     2020-05-13 20:34:16   deviceName      My LaMetric
     2020-05-13 20:34:16   deviceOsVersion 2.0.26
     2020-05-13 20:34:16   deviceSerialNumber <geschwärzt>
     2020-05-15 16:14:40   lastCommand     device/apps/com.lametric.clock/widgets/08b8eac21074f8f7e5a29f2855ba8060/actions (POST)
     2020-05-15 16:14:40   lastCommandResult { "success" : { "data" : {  }, "path" : "/api/v2/device/apps/com.lametric.clock/widgets/08b8eac21074f8f7e5a29f2855ba8060/actions" } }
     2020-05-14 18:52:36   lastMessage     test
     2020-05-14 18:52:36   lastNotificationIconType info
     2020-05-14 18:52:36   lastNotificationLifetime 120
     2020-05-14 18:52:36   lastNotificationPriority info
     2020-05-14 18:52:36   lastNotificationSound off
     2020-05-14 18:52:36   lastNotificationTitle
     2020-05-14 18:52:36   lastNotificationType msg
     2020-05-13 20:34:16   mute            off
     2020-05-14 17:51:27   power           on
     2020-05-13 20:34:16   presence        present
     2020-05-14 20:13:40   screensaver     off
     2020-05-14 17:51:27   screensaverEndTime 04:45:00
     2020-05-14 17:51:27   screensaverStartTime 21:00:00
     2020-05-14 17:51:27   state           on
     2020-05-14 17:51:27   stateAV         on
     2020-05-13 20:34:16   volume          100
     2020-05-13 20:34:16   wifiActive      1
     2020-05-13 20:34:16   wifiAddress     <geschwärzt>
     2020-05-13 20:34:16   wifiAvailable   1
     2020-05-13 20:34:16   wifiEncryption  WPA
     2020-05-13 20:34:16   wifiEssid       <geschwärzt>
     2020-05-13 20:34:16   wifiIp          192.168.178.84
     2020-05-13 20:34:16   wifiMode        dhcp
     2020-05-13 20:34:16   wifiNetmask     255.255.255.0
     2020-05-15 16:21:58   wifiStrength    52
   helper:
     apps:
       com.lametric.clock:
         package    com.lametric.clock
         title      Clock
         vendor     LaMetric
         version    2.2.13
         version_code 50
         actions:
           clock.alarm:
             enabled:
               data_type  bool
               name       enabled
             time:
               data_type  string
               format     [0-9]{2}:[0-9]{2}(?::[0-9]{2})?
               name       time
             wake_with_radio:
               data_type  bool
               name       wake_with_radio
           clock.clockface:
             icon:
               data_type  string
               name       icon
             type:
               data_type  string
               format     weather|page_a_day|custom|none
               name       type
         triggers:
           alarm:
             snooze:
               data_type  bool
               name       snooze
         widgets:
           08b8eac21074f8f7e5a29f2855ba8060:
             index      0
             package    com.lametric.clock
             settings:
               _title     Uhr
       com.lametric.countdown:
         package    com.lametric.countdown
         title      Таймер
         vendor     LaMetric
         version    1.0.9
         version_code 15
         actions:
           countdown.configure:
             duration:
               data_type  int
               name       duration
             start_now:
               data_type  bool
               name       start_now
           countdown.pause:
           countdown.reset:
           countdown.start:
         triggers:
           finished:
             duration:
               data_type  int
               name       duration
           paused:
             duration:
               data_type  int
               name       duration
           reset:
             duration:
               data_type  int
               name       duration
           resumed:
             duration:
               data_type  int
               name       duration
           started:
             duration:
               data_type  int
               name       duration
         widgets:
           f03ea1ae1ae5f85b390b460f55ba8061:
             index      4
             package    com.lametric.countdown
             settings:
       com.lametric.radio:
         package    com.lametric.radio
         title      Radio
         vendor     LaMetric
         version    1.0.20
         version_code 32
         actions:
           radio.next:
           radio.play:
           radio.prev:
           radio.state:
           radio.stop:
         triggers:
         widgets:
           589ed1b3fcdaa5180bf4848e55ba8061:
             index      2
             package    com.lametric.radio
             settings:
       com.lametric.stopwatch:
         package    com.lametric.stopwatch
         title      Stopwatch
         vendor     LaMetric
         version    1.0.6
         version_code 12
         actions:
           stopwatch.pause:
           stopwatch.reset:
           stopwatch.start:
         triggers:
         widgets:
           b1166a6059640bf76b9dfe0455ba8062:
             index      -1
             package    com.lametric.stopwatch
             settings:
       com.lametric.weather:
         package    com.lametric.weather
         title      Weather
         vendor     LaMetric
         version    1.0.12
         version_code 20
         actions:
           weather.forecast:
           weather.get.cc:
         triggers:
         widgets:
           380375c4b12c16e3adafb48355ba8061:
             index      1
             package    com.lametric.weather
             settings:
               _title     Wetter
     inputs:
       radio:
         app_id     radio
         name       Radio
         package_id com.lametric.radio
         vendor_id  com.lametric
         widget_id  589ed1b3fcdaa5180bf4848e55ba8061
       stopwatch:
         app_id     stopwatch
         name       Stopwatch
         package_id com.lametric.stopwatch
         vendor_id  com.lametric
         widget_id  b1166a6059640bf76b9dfe0455ba8062
       uhr:
         app_id     clock
         name       Uhr
         package_id com.lametric.clock
         vendor_id  com.lametric
         widget_id  08b8eac21074f8f7e5a29f2855ba8060
       wetter:
         app_id     weather
         name       Wetter
         package_id com.lametric.weather
         vendor_id  com.lametric
         widget_id  380375c4b12c16e3adafb48355ba8061
       таймер:
         app_id     countdown
         name       Таймер
         package_id com.lametric.countdown
         vendor_id  com.lametric
         widget_id  f03ea1ae1ae5f85b390b460f55ba8061
Attributes:
   cmdIcon    play:rc_PLAY channelDown:rc_PREVIOUS channelUp:rc_NEXT stop:rc_STOP muteT:rc_MUTE inputUp:rc_RIGHT inputDown:rc_LEFT
   defaultOnStatus illumination
   defaultScreensaverEndTime 06:00
   defaultScreensaverStartTime 00:00
   defaultVolume 50
   devStateIcon on:rc_GREEN@green:off off:rc_STOP:on absent:rc_RED playing:rc_PLAY@green:pause paused:rc_PAUSE@green:play muted:rc_MUTE@green:muteT fast-rewind:rc_REW@green:play fast-forward:rc_FF@green:play interrupted:rc_PAUSE@yellow:play
   https      1
   icon       time_statistic
   model      LM 37X8
   notificationGoalEnd 100
   notificationGoalIcon a11460
   notificationGoalIconType info
   notificationGoalLifetime 120
   notificationGoalPriority info
   notificationGoalStart 0
   notificationGoalUnit %
   notificationIcon i8919
   notificationIconType info
   notificationLifetime 120
   notificationMetricIcon i9559
   notificationMetricIconType info
   notificationMetricLang en
   notificationMetricLifetime 120
   notificationMetricPriority info
   notificationPriority info
   room       LaMetric2
   stateFormat stateAV
   verbose    5
   webCmd     volume:muteT:channelDown:play:stop:channelUp:inputDown:input:inputUp


VG
tatu123

siggi85

#52
Probier mal:

set lametric app clock clockface icon='data:image/gif;;base64,R0lGODlhCAAIAKIAACQiJIyKjMzOzPQCFLS2tPTGzPxabAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgAAACwAAAAACAAIAAADEwi6PPbNFBNlpSoEwUUOREgwZAIAIfkECQoAAAAsAAAAAAgACACCJCIkjIqMzM7M/FpstLa09MbMAAAAAAAAAxMIujw+rbg2JJ0qBMFFDkRIMGQCACH5BAkKAAAALAAAAAAIAAgAAAMUCLpsPqy8JuFyxoIQhBcKR4wEYyYAIfkECQoAAAAsAAAAAAgACAAAAxQIumw2o724ypRwhSC6UBshEkyZAAAh+QQJCgAAACwAAAAACAAIAIIkIiSMioz0AhS0trT8WmzMzswAAAAAAAADFAi6TCKkvbgclFeFUHrRwSAOTJkAACH5BAkKAAAALAAAAAAIAAgAAAMTCLo8Y6a9ImGNKgTBRQ5ESDBkAgA7'

EDIT: Mir ist aufgefallen, dass es nur funktioniert, wenn 2 Semikolon vor "base64" stehen. (das zweite Semikolon musste ich bisher immer manuell dazuschreiben wenn ich die base64 Werte bestehender Icons ermittelt habe)

wiedemer

Könnt Ihr mir hier helfen?
Ich habe eine Loxone, die mit FHEM gekoppelt mein SmartHome steuert.

Jetzt habe ich in der Loxone einen einzigen, zentralen Wecker, den ich aktiviere/deaktiviere oder über den ich die Weckzeit einstelle und daraufhin das Schlafzimmerlicht, das Badlicht und den Denon in Zone "Bad" steure.
Funktion:
Ist die Weckzeit erreicht, dann sende ich direkt ein Signal an die LaMetric, dass die wecken soll. - Klappt wunderbar.
Aktuell habe ich (aufgrund einer fehlenden Lösung) hard-codiert in der Loxone eingestellt, dass die 5 Minuten später nochmal das Signal zum Wecken an die LaMetric schicken soll.

Das würde ich gerne "optimieren", weiß aber nicht wie und ich denke, dieses Modul hier könnte u.U. helfen...

Ist es möglich, den "Snooze"-Status der LaMetric abzufragen und daraufhin ein Notify zu schicken?

Gruß + Danke

Ralf

Thyraz

Sorry schon vorab für Offtopic, aber hier laufen die meisten LaMetric User herum. ;)

https://github.com/FD-/LaMetric-SDK

Es hat wohl jemand geschafft native Apps auf die Uhr zu bekommen.
Also sowohl zu compilieren als auch ohne Hacks aufzuspielen.

Werde mal die Firmware entpacken und schauen ob man genug Infos zusammenbekommt was an Funktionen in den Header Files steckt.

Wäre zu cool wenn man ne App hinbekommen würde, die auch die Schwarz-Weiß Pixel gezielt ansteuern kann.
C++ ist leider gar nicht meins, aber mal sehen...
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

slupus

Ich würde gerne mehrere Frames mit je einem eigenen Icon nutzen. Hat jemand einen Tipp, wie ich das umsetzen kann?
set lametric app FHEM push token=*** icon=i8919 eins\n icon=i4285 zwei

zeigt Frame eins mit Icon an, Frame zwei ohne Icon

set lametric app FHEM push token=*** icon=i8919 eins\nicon=i4285 zwei

Frame eins wird nicht angezeigt, Frame zwei mit Icon

ares

Zitat von: slupus am 26 Februar 2022, 21:49:54
Ich würde gerne mehrere Frames mit je einem eigenen Icon nutzen. Hat jemand einen Tipp, wie ich das umsetzen kann?

Mit My Data (DIY) lassen sich 1-20 Frames anzeigen, die sich die LaMetric selbst aus fhem holt:
https://help.lametric.com/support/solutions/articles/6000225467-my-data-diy

Im Anhang ein einfaches schnell gestricktes Beispiel, das mir Daten von vorher importen Werten aus https://corona-ampel-bayern.de/ mit zum Status passenden icons anzeigt.
Test: https://192.168.xxx.yyy/fhem?cmd=LaMetric_MyData
Zugriff über eine eigenes abgesichertes FHEMWEB-Device.
{
  "frames" : [
    {
      "icon": "4238",
      "text": "6.93"
    },
    {
      "icon": "24582",
      "text": "1349.03"
    },
    {
      "icon": "45126",
      "text": "79.37%"
    }
  ]
}


Bisher habe ich LaMetric2 noch nicht im Einsatz, das steht aber ganz oben auf meiner ToDo-Liste.
Lässt sich das Beispiel auch komplett ohne zusätzliche App umsetzen?

slupus

Danke, ares, für dein Beispiel. Ich bekomme zumindest in FHEM eine Seite mit dem JSon angezeigt, allerdings zeigt mir die MyData App auf der LaMetric keine Daten an.
Kannst du evtl. auch dein FHEMWEB Device teilen oder mit einen Tipp geben, weshalb die Daten nicht angezeigt werden?

Ich glaube, ohne App auf der LaMetric wird es nicht gehen.

ares

Zitat von: slupus am 03 April 2022, 20:05:36
Danke, ares, für dein Beispiel. Ich bekomme zumindest in FHEM eine Seite mit dem JSon angezeigt, allerdings zeigt mir die MyData App auf der LaMetric keine Daten an.
Kannst du evtl. auch dein FHEMWEB Device teilen oder mit einen Tipp geben, weshalb die Daten nicht angezeigt werden?

Ich glaube, ohne App auf der LaMetric wird es nicht gehen.

Die Anzeige in FHEM ist der erste Schritt.

Ich habe mir für den Zugang ein neues FHEMWEB-Device erstellt:
defmod WEBapi FHEMWEB 8088 global
attr WEBapi allowedHttpMethods GET
attr WEBapi csrfToken HierDeinToken
attr WEBapi styleData {\
"f18": {\
  "Pinned.menu": "true",\
  "hidePin": "true",\
  "cols.bg": "FFFFE7",\
  "cols.fg": "000000",\
  "cols.link": "278727",\
  "cols.evenrow": "F8F8E0",\
  "cols.oddrow": "F0F0D8",\
  "cols.header": "E0E0C8",\
  "cols.menu": "D7FFFF",\
  "cols.sel": "A0FFFF",\
  "cols.inpBack": "FFFFFF",\
  "savePinChanges": true,\
  "hideLogo": true,\
  "hideInput": true,\
  "hideTextInput": true,\
  "hideMenu": true,\
  "fixedInput": true,\
  "wrapcolumns": true,\
  "widePortrait": true\
}\
}
attr WEBapi webname LaMetric


Danach sollte folgende Seite (IP und Token anpassen) das JSON-Ergebnis ohne "FHEM-Menü" anzeigen.
http://192.168.xxx.xxx:8088/LaMetric?XHR=1&fwcsrf=HierDeinToken&cmd=LaMetric_MyData

Danach installierst Du die App My Data (DIY) von LaMetric ... https://apps.lametric.com/apps/my_data__diy_/8942

In der App dann einfach den bereits getesteten Aufruf einfügen:
http://192.168.xxx.xxx:8088/LaMetric?XHR=1&fwcsrf=HierDeinToken&cmd=LaMetric_MyData

Der Code sollte nur als erstes Beispiel für eigene Versuche dienen. Ich fand die Möglichkeit aber recht angenehm und für mich funktioniert es bisher problemlos.

Zusätzlich setze ich noch mit einem DOIF in leicht änderbarer Reihenfolge das Icon der Uhr und zeige z.B. bei einem Anruf mit Lauftext den Anrufer an.

slupus

Danke für das Beispiel, damit funktioniert es nun auch bei mir!
Dann kann ich jetzt kreativ werden ;) Habe schon ein paar Ideen, ähnlich deiner Anzeige des Anrufers.