FHEM Wdget (iOS)

Begonnen von HaPeRiebmann, 07 Dezember 2015, 21:46:23

Vorheriges Thema - Nächstes Thema

HaPeRiebmann

Hi,

zu 1: wenn du den Sync Service nutzt dann ist in der Regel oben ein grüner Balken. Wenn der wirklich grün ist, dann sind alle Devices synchronisiert die auch der Sync Client ausliest. Ohne Sync Service wird parallel die Websocket Verbindung zu FHEM aufgebaut, das heißt, dass eigentlich keine Stati verloren gehen dürfen. Wenn da wirklich was verloren geht dann sollte man mal in deine Konfiguration schauen.

zu 2: Solch einen Mischzustand kann ich derzeit nicht auflösen. Ich will auf meinem Server keinen State von dem halten was dein FHEM intern nutzt oder was deine App nutzt. Deswegen gibt es auch keine Persistenz außer für die Synctoken. Wenn der Server weg ist dann ist auch alles weg was dein Client mir geschickt hat. Das heißt ich müsste solche "lastupdated" States auf der App und im Sync Client halten. Dazu auf der App die Stati wieder irgendwie mergen. Das war mir bisher ein zu großer Aufwand, da ich das selber auch nur schlecht testen kann. Darf ich fragen inwiefern das bei dir auftritt?

Zitatweitere kleinigkeit die mir aufgefallen ist, dass ein schalter orange ist wenn er ausist und grau wenn er an ist. intuitiv würde ich es anders herum besser finden.
Dreh einfach die Werte im JSON Feld "allowed_values" um. Hier ist die Reihenfolge wichtig.

Viele Grüße
Michael
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

FhemPiUser

#721
hi,

danke, das umdrehen von on und off in allowed_values hat gewirkt!

Zu 1): hier meinte ich auch ohne sync service. beispiel: ich sitze zu hause im wlan und öffne die app. ich schalte jetzt den flugmodus im hand an und lege dann eine schalter in der app um. der zustand in der app kann natürlich nicht an fhem übertragen werden und ist falsch. wenn ich jetzt den flugmodus wiede rausnehme ist der zustand noch immer falsch bzw. anders als in fhem. das gleiche würde bei einem funkloch oder sonstigen verbindungsproblemen passieren. kann man denn den schalter nicht erst dann umlegen, wenn die bestätigung von fhem kommt bzw die websocket verbindung erfolgreich ist?

Zu 2) Ich hatte heute z.B. die App geöffnet über den Sync Service (außerhalb WLAN) und oben einen grünen Balken gesehen. Trotzdem waren die Readings nicht aktualisiert. Erst nach einem Wisch nach unten (manuelles synchronisieren) wurden  Readings aktualisiert. Und manchmal werden auch dann nicht alle, sondern nur ein paar Readings aktualisiert (welche ist schwer zu sehen, daher der Vorschlag mit dem grau) und ich muss öfter nach unten wischen bzw. manuell synchronisieren, damit auch alle Readings aktualisiert sind.

HaPeRiebmann

Hi,

grundsätzlich hast du recht, wenn die Verbindung nicht stabil ist dann hat man nur ein partielles Update. Das kann man dann triggern durch die Geste oder den Button.
Ein partielles Update wenn man direkt im WLAN ist sehe ich in meinen Tests nicht. Wenn die Verbindung da ist dann wird auch alles aktualisiert und wenn die Websocket Verbindung da ist dann holen sie sich auch immer den neuesten Stand.

Wie viele Kanäle hast du definiert?

VG
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

FhemPiUser

ich habe ca 50 geräte/zeilen in der device list.

ich nehme an das problem nimmt bei vielen geräten bzw mehreren seiten in der device list zu...

phlash

Leider stürzt die App bei mir direkt ab sobald ich auf "Anleitung" tippe - der Log zeigt auch nur ein schwarzes Fenster.
Getestet auf einem iPhone 8 mit iOS 12.4 (jailbroken).

Jamo

Hi Michael,
ich habe die aktuelle Version aus dem Appstore auf meinem iPhone (iOS 13.3) und iPad (iPadOS 13.3) installiert.
Tolle iOS App, die ich gerne produktiv nutzen werde/würde, ich habe die Subscription. Dank an Dich!

Hier mal mein Feedback, zu meiner spezifischen Installation:
Die URL die ich in der App gesetzt habe, laufen in FHEM unter "WebSockets". Ich habe nur "on/off" Schalter eingebunden, wo ich mal schnell im iOS Widget was schalten will.


  • Unter Settings -> Log, erscheint zuerst ganz kurz der Log (schwarze Schrift auf weissem Grund), dann wird das Fenster Schwarz (also der Hintergrund). Da die Schrift auch scharz ist, sieht man gar nichts. Man muss also den Bildschirminhalt kopieren, und sich z.B. in Notes auf weissem Hintergrund kopieren, damit man das sieht

  • In Settings -> Instructions ist unter "dem Punkt "Manual Setup" der entry "displayLocations" falsch, weiter unten in der Tabelle steht nur "Locations", wenn man schnell schaut und copy paste macht gehts erst nicht. Das ist verwirrend.

  • In Settings -> Instructions steht man sollte das attr "fhem_widget_command attr fhem_widget_command_2" zu global hinzufügen. Da ich die Version 2 habe, genügt auch nur das letztere. Nur ein kleiner Verbesserungsvorschlag. Ich glaube für jemanden der eine Erstinstallation macht, verwirrend.
  • Der Synch mit den Widgets (egal ob "FHEM" oder "FHEM Grid") arbeitet nicht zuverlässig, manchmal ist im Widget erst der richtige Zustand sichtbar, nachdem ich in der App in der  'List' Ansicht ein refresh gemacht habe. Bei einigen Schaltern gehts, bei anderen (ich habe einen der ein eventmap hat, der Schalter selber geht aber mit on/off) manchmal nicht.

  • Das 'Save und Update' funktioniert nicht zuverlässig. Ich hatte einen Schalter, wo ich attr fhem_widget_command_2 "controlled_attribute":"state" in fhem gesetzt hatte, das hat dann aber statt den state auf "on" oder "off" zu setzten, den state auf "state on" und "state off" gesetzt. Gut, kein Problem, das "controlled_attribute":"state" habe ich in fhem wieder aus dem attribut gelöscht. Aber nach dem "Save und Update" wurde der fhem-Schalter in der App in der 'List' Ansicht mit "on" oder "off" geschaltet, aber im Widget weiterhin mit "state on" und "state off". Ich musste also erst in fhem das attr fhem_widget_command_2 löschen (also aus den FHEM Widget 2 devices quasi löschen), danach wieder "Save und Update", dann das attribut wieder einfügen, wieder ein "Save und Update", dann gings wieder.

  • Ich habe einen ALARM Schalter in fhem, den möchte ich über das FHEM Widget2 nur "Ausschalten", damit ich nicht aus Versehen vom iPhone den Alarm anschalte. Anwendungsfall ist, wenn der Alarm fälschlicherweise ausgelöst wurde, möchte ich einfach eine Möglichkeit haben, den Alarm nur auszumachen. Ich habe vieles probiert, "allowed_values": ["off","off"]" funktioniert nicht, "allowed_values": ["off"]" auch nicht, entweder wird der Zustand nicht richtig angezeigt, oder der Alarm wird trotzdem ausgelöst (also der Schalter auf 'on' gesetzt obwohl allowed_values nur ["off","off"]sind. Wird so ein Fall unterstützt von der App? Wie muss ich das kodieren?

Am meisten nervt mich, dass der Synch mit den Widgets bei mir nicht richtig funktioniert, damit steht und fällt für mich die Usability. Im Safari Browser unter iOS sehe ich IMMER den aktuellen Status, aber ein wisch nach links, damit man im Widget den Schalter einfach bedienen kann, ist einfach schneller und man muss nicht reinzoomen.

Hier mal der Schalter der nicht richtig synchronisiert, der mit dem Eventmap:

Internals:
   FUUID      dadadadadada
   NAME       FritzBox_Port
   NR         3681
   STATE      0
   TYPE       dummy
   READINGS:
     2020-01-18 22:40:57   state           off
Attributes:
   alias      WireGuard
   devStateIcon 0:ios-off:1 1:ios-on-green:0 .*:ios-on-red
   eventMap   on:1 off:0
   fhem_widget_command_2 {"allowed_values": ["off","on"], "filter":"public", "alias":"WireGuard", "locations":["APP","WIDGET","WATCH"]}
   webCmd     on:off


Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

HaPeRiebmann

Hi,

das ist eine nette Liste:
Zitatnter Settings -> Log, erscheint zuerst ganz kurz der Log...
Ein fieser Bug... Wenn du in den Dark Mode wechselst dann ist es lesbar. Da scheint mir was beim Testen durchgerutscht zu sein. Ich nutze den Light Mode nicht. Fixe ich in der nächsten Version.

Bei den Instructions habe ich gesehen dass quasi niemand die englischen liest, deswegen könnten die ein wenig unsauberer sein. Falls es schnell gehen muss: In meiner Signatur sind die Anleitungen auch hinterlegt.

Das Problem mit dem Sync:
Meinst du das Updaten der Widgets nach "Speichern und Update"? Wenn ja, dann kann es sein dass dein Fon einen Neustart braucht damit die Daten der Widgets synchronisiert werden. Das kam mit iOS 13 bei mir rein und ich bin mir noch nicht klar warum.

Wenn es wirklich um den Sync des Status aus FHEM in die App geht: Wieviele Devices hast du?

ZitatIch habe einen ALARM Schalter in fhem,
Versuch mal einen SETSTATE zu bauen, also zwei Kanäle mit demselben Alias, einer ein Setter, der nur off enthält und einen der den State ausliest.

Viele Grüße

Michael


Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

Jamo

Hallo Michael,
vielen dank für deine Hilfe.

  • Ja, ich benutze die Englische Version, ich bin beruflich Englisch unterwegs und das Englische ist einfach kürzer. Gut da bin ich reingefallen, ich habe gesehen das die deutsche Anleitung ausführlicher ist.
  • "Ich habe einen ALARM Schalter in fhem": Ist jetzt gelöst (im Gridview), mit dem Tip von Dir und dem "çombine Devices" in den Settings. Die Farbe der Grid Kachel ändert sich zwar nicht wenn der ALARM "on" ist, aber den Zustand sehe ich dann kaum lesbar in schwach grauer Schrift auf grauem Untergrund unter dem Alias :-)
  • Das mit dem "Schalter der nicht richtig synchronisiert, der mit dem Eventmap": Das kommt daher, das Du auf das internal STATE schaust (was durch die Eventmap bei mir dann 1/0 ist, der Schalter state ist aber on/off. Ich habe den Schalter jetzt auf 1/0 umgestellt, und das eventmap rausgeschmissen.
    Aber das hatte ich schon mal bei einem anderen Modul (Presence), das Internal STATE kann ja auch mit Stateformat verändert werden, damit wurde dann auch der presence nicht richtig erkannt. Das gleiche wird wahrscheinlich bei deinem Modul auch passieren, wäre es nicht richtiger, auf das state reading zu schauen, anstatt auf das Internal STATE?
  • Ja, mein iPhone und iPad braucht einen Neustart, das meinte ich.
  • Ausserdem hatte ich ja das Problem mit dem eventmap (siehe oben), der state wurde dann im Widget auch nicht richtig synchronisiert, aber ist ja jetzt gelöst mit dem umdefinieren auf 1/0.

Jetzt brauch ich nur noch eine Brille für das kleine graue 'on' auf grauem Untergrund unter dem ALARM alias, dann ist alles Prima.

Danke nochmal!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

HaPeRiebmann

Hi,

Dann passts ja :-)

wenn du mit dem Hintergrund oder der Farbe spielst dann sollte die Brille nicht mehr nötig sein :-)
Im Grid kannst du im Prinzip jedes einzelne Element mit einem separaten Hintergrund stylen.

Viele Grüße
Michael
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

Jamo

Ja das muss ich dann wohl noch machen.

Was mir gerade noch aufgefalle ist, ist das die "order" komisch ist im Grid, wenn ich elemente von 1 ... 8 habe, hätte ich erwartet, das 1 links ist, und die 8 rechts, es ist aber genau umgekehrt, das heisst ich schiebe immer von links nach, anstatt rechts dranzuhängen. Das element was ich auf Position 1 sehen will, wird also immer weiter nach rechts (oder beim mehrzeiligen) nach unten geschoben...

Muss ich dann wohl wieder umsortieren ... 

Danke nochmal!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

#730
Hi Michael,
eine letzte Frage, das mit dem farbigen Hintergrund klappt nicht.
ich habe ein multiChannel device, aber der der hintergrund des Devices im Grid ist immer grau. Oder wirkt das 'color' nur bei einkanaligen devices?
Hier was ich probiert habe:
[{"allowed_values": ["alarmOff"], "color":"#FFFFFF", "order":99, "filter":"public", "alias":"ALARM", "locations":["APP","WIDGET","WATCH"]},
{"controlled_attribute":"state","allowed_values": [], "color":"#FFFFFF", "order":99, "filter":"public", "alias":"ALARM", "locations":["APP","WIDGET","WATCH"]}]

[{"allowed_values": ["alarmOff"], "value_colors":"#FFFFFF", "order":99, "filter":"public", "alias":"ALARM", "locations":["APP","WIDGET","WATCH"]},
{"controlled_attribute":"state","allowed_values": [], "color":"#FFFFFF", "order":99, "filter":"public", "alias":"ALARM", "locations":["APP","WIDGET","WATCH"]}]

PS: Habe gerade in einem POST vorher gelesen, das ein STATE keine Farben kann. Das mit dem Grau auf grauem Hintergrund ist schon übel. Und dafür dann einen farbigen PNG zu erstellen....
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

jmike

Hi Michael.

Gibts eigentlich eine Möglichkeit ein Webcam Bild zum Status Widget hinzuzufügen?
Ich hab es mit dem background_image probiert aber der scheint FHEM-externe URLs nicht zu mögen.

Stell ich mich zu blöd an oder geht das nicht?
Falls nein, dürfte ich das bei dir als Feature-Request einreichen ? :)

Usecase: Ich suche eine Möglichkeit, im Widget den Snapshot von Kameras zu sehen.
Hatte erst nach externen Apps geschaut, aber das ist alles nix gescheites.

Danke&Lg
Mike

Jamo

#732
Hi Michael,
noch ein Fehler:
Ich habe einen einfachen on/off Schalter mit Leistungsmessung. Wenn der Schalter an ist, lasse ich mir im STATE zusätzlich zum ón/off die den Leistungsverbrauch anzeigen.
Dafür habe ich eine 'attr stateFormat' beimSchalter definiert, unten das list des Schalters mit den Internals und den Stateformat.

Damit funktioniert aber die Kachel Farben Darstellung für on/off nicht, da der Internal "STATE" im on-Zustand nicht "on" ist, sondern "<font color="darkorange"><b>on 0.00 W</b></font>". Also dadurch bleibt die Kachel für den on Zustand bleibt immer Grau.

Das Problem ist das deine APP den INTERNAL "STATE" auswertet, anstatt das reading "state". Das ist meiner Meinung nicht richtig, weil man den STATE über das attribut stateformat verändern kann.

Mit "controlled_attribute": "state" lässt sich das nicht beheben, weil dann der state auf '"state on'' gesetzt wird, anstatt einfach auf 'on'. Also im Reading state steht dann "state on" anstatt 'on'.

Hier mal der Code:
[{"order":29,"filter":"public","alias":"SchalterJessie","allowed_values":["off","on"], "locations":["APP","WIDGET","WATCH"]}]

Internals:
   DEF        FBAHA0:12345_123456 switch,powerMeter
   FBAHA0_MSGCNT 1686
   FBAHA0_TIME 2020-01-26 11:14:05
   IODev      FBAHA0
   LASTInputDev FBAHA0
   MSGCNT     1686
   NAME       Schalter_Jessie
   NR         2440
   STATE      <font color="darkorange"><b>on 0.00 W</b></font>
   TYPE       FBDECT
   id         12345_123456
   props      microphone,powerMeter,tempSensor,switch
   Helper:
     DBLOG:
       temperature:
         myDbLog:
           TIME       1580033645.84828
           VALUE      21.0
   READINGS:
     2020-01-26 11:14:05   AIN             12345 123456
     2020-01-26 11:14:05   FBNAME          Schalter_Jessie
     2020-01-26 11:14:05   power           0.00 W
     2020-01-26 11:14:05   present         yes
     2020-01-26 11:16:37   state           on
Attributes:
   IODev      FBAHA0
   event-on-change-reading power,state,temperature
   fhem_widget_channels [{"order":29,"filter":"public","alias":"SchalterJessie","allowed_values":["off","on"],"locations":["APP","WIDGET","WATCH"]}]
   group      SCHALTER
   model      Dect200
   room       FritzBox,Homekit,Schalter
   sortby     35
   stateFormat {my $state = ReadingsVal($name,"state","nA");
                my $power = ReadingsVal($name,"power","nA");
                my $string = $state . " " . $power;
                if   ($state eq "on") {return '<font color="darkorange"><b>' . $string . '</b></font>';}
                else {return  $state }}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

HaPeRiebmann

@ Mike:
Das geht derzeit noch nicht, ich hab selber keine in FHEM und da ist es für mich schwierig sowas anzubieten
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8

HaPeRiebmann

@Jamo:
Hast schonmal versucht das in drei Kanäle aufzusplitten und ein STATESWITCH zu bauen? StateFormat ist ja nur sinnvoll in der Weboberfläche
Raspberry Pi | Homematic Komponenten | Brennenstuhl Funksteckdosen | homebridge
http://fhemwidget.de.tasior.de
Slack: fhemwidget.slack.com
https://itunes.apple.com/us/app/fhem-widget-2/id1169530472?l=de&ls=1&mt=8