FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: Loredo am 17 Januar 2016, 13:13:29

Titel: [FTUI] Updates überschneiden sich
Beitrag von: Loredo am 17 Januar 2016, 13:13:29
Hallo,


ich hatte verstanden, dass man die beiden Quellen additiv benutzen kann/soll:


https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt
https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt


Nun scheinen aber beide Quellen gleichzeitig die selbe Datei zu liefern und deshalb taucht die gleiche Datei immer wieder erneut im Update auf:

Zitat
2016-01-17 13:08:52 Global global fhemtabletui
2016-01-17 13:08:52 Global global UPD www/tablet/js/widget_button.js
2016-01-17 13:08:52 Global global
2016-01-17 13:08:52 Global global New entries in the CHANGED file:
2016-01-17 13:08:52 Global global FHEM tablet UI last change:
2016-01-17 13:08:52 Global global 2016-01-16
2016-01-17 13:08:52 Global global  - Updated thermostat
2016-01-17 13:08:52 Global global
2016-01-17 13:08:52 Global global
2016-01-17 13:08:52 Global global widgets-for-fhem-tablet-ui
2016-01-17 13:08:53 Global global UPD www/tablet/js/widget_button.js


Hier streiten sich also zwei Quellen um die selbe Datei. Das sollte doch besser irgendwie aufgelöst werden, oder?
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: Aladin222 am 18 Januar 2016, 10:56:10
Zitat von: nesges am 18 April 2015, 17:36:07
Gute Idee! Das control-File hat ja schon die benötigten Infos, das müsste man nur prüfen und mit den lokalen Files vergleichen. Kann man mit HTTPMOD machen, man braucht nur eine Prüffunktion, die man irgendwo in eine 99_myUtils.pm legt:

sub controlfile_updatecheck($) {
    use Date::Parse;
    my $raw = shift;

    my $response='';
    my @lines = split "\n", $raw;
    foreach my $line (@lines) {
        my @remote= split " ", $line;
        if(@remote>3 && $remote[0] eq "UPD") {
            Log 3, $line;
            $remote[1]=~s/_/ /;
           
            my @local = stat($remote[3]);
            if($local[7] != $remote[2] || $local[9] < str2time($remote[1])) {
                $response .= $remote[0]." ".$remote[3]."\n";
            }
        }
    }
    return $response;
}


Eine Funktion um das Update durchzuführen und die Readings zu aktualisieren:

sub controlfile_update($) {
    my $device = shift;
    my $url = InternalVal($device, 'url', '');
    my $def = InternalVal($device, 'DEF', '');
   
    fhem("setreading $device available updated");
    fhem("setreading $device files -");
    fhem("define at_recheck_$device at +00:05:00 modify $device $def");
    fhem("update all $url");
}


Und in die fhem.cfg kommen dann diese Definitionen:

define UPDATE_FTUI HTTPMOD https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt 14400
attr UPDATE_FTUI alias Fhem Tablet UI
attr UPDATE_FTUI userattr timeout reading01Name reading01Regex reading02Name reading02Regex
attr UPDATE_FTUI event-on-change-reading available,files
attr UPDATE_FTUI reading01Name files
attr UPDATE_FTUI reading01Regex (?s)(UPD.*)
attr UPDATE_FTUI reading01Expr $val=controlfile_updatecheck($val);;$val
attr UPDATE_FTUI reading02Name available
attr UPDATE_FTUI reading02Regex (?s)(UPD.*)
attr UPDATE_FTUI reading02Expr $val=controlfile_updatecheck($val) ne ''?'yes':'no';;$val
attr UPDATE_FTUI room hidden

define UPDATE_WIDGETS HTTPMOD https://raw.githubusercontent.com/nesges/Widgets-for-fhem-tablet-ui/master/controls_widgets-for-fhem-tablet-ui.txt 14400
attr UPDATE_WIDGETS alias Widgets for Fhem Tablet UI
attr UPDATE_WIDGETS userattr timeout reading01Name reading01Regex reading02Name reading02Regex
attr UPDATE_WIDGETS event-on-change-reading available,files
attr UPDATE_WIDGETS reading01Name files
attr UPDATE_WIDGETS reading01Regex (?s)(UPD.*)
attr UPDATE_WIDGETS reading01Expr $val=controlfile_updatecheck($val);;$val
attr UPDATE_WIDGETS reading02Name available
attr UPDATE_WIDGETS reading02Regex (?s)(UPD.*)
attr UPDATE_WIDGETS reading02Expr $val=controlfile_updatecheck($val) ne ''?'yes':'no';;$val
attr UPDATE_WIDGETS room hidden

define UPDATES readingsGroup UPDATE_FTUI:available,files UPDATE_WIDGETS:available,files
attr UPDATES valueFormat { ($READING eq 'files' && $VALUE !~ /^-?$/)?'<a href="?cmd={controlfile_update(\'$DEVICE\')}">[Start Update]</a>':$VALUE }
attr UPDATES alias 3d Party Updates
attr UPDATES room System


In der readingsGroup wird ein Link mit dem Text "[Start Update]" angezeigt, sobald ein Update verfügbar ist. Die readingsGroup kann man sicher noch schöner machen, aber da kenn ich mich nicht aus und überlasse das euch :)

PS: Habe ein paar Stellen verändert, am besten komplett neu übernehmen.


Sorry ,entweder ich habe da was falsch verstanden , oder es hakt bei mir irgendwo :
- o.g. Erstellt einen Raum System, in dem eine Möglichkeit ist ,wenn ein Update vorhanden ist ,ein Update für das Tablet UI bzw die Widgets anzustoßen .
Soweit sieht das bei mir auch gut aus !
Es wird ein Update beides angezeigt !
Das erste Update lasse ich laufen ... Restart ... Nur noch Update für Widget da :-)
Lasse ich dieses Update laufen ... Restart .... Erscheint wieder ein Update für Tablet UI ...usw.
Da das ja eigentlich nicht sein kann , habe ich es mal händisch versucht und dachte ich bin nun UP to Date .
Hmmmm, mache ich den updatecheck , so wird mir aber immer noch das gleiche Update zu Verfügung gestellt ....grummel
Was mach ich denn da falsch ?
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: Loredo am 18 Januar 2016, 11:06:33
Das korreliert leider damit, dass man jetzt gerne die von Rudi jüngst eingebauten neuen Funktionen in update (http://fhem.de/commandref.html#update) nutzen möchte ("update add <URL>") und alle Updatequellen darüber zentral steuern und verwalten möchte ("update list" etc).


Davon einmal abgesehen gab es den Konflikt vorher auch schon.
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: Aladin222 am 18 Januar 2016, 12:09:45
hmmmm, ja hat bei mir nie funktioniert bzw. zeigte nach einem Update vom Tablet UI direkt wieder verfügbare bei Widget´s an ...

Trotz allem stellt sich mir nun die Frage , wie mache ich ein Update für das Tablet UI und wie für die Widget´s ?
Denn auch wenn ich es von Hand mache ( lt Wiki ) - kommt niemals für beide das nothing to do ...
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: Loredo am 18 Januar 2016, 12:11:48
Eben.


Weil die beiden Maintainer da Dateien doppelt in ihren Repositories anbieten und die dazu noch unterschiedlich sind.
Dies sollte aufgelöst werden, damit dieses Problem dann nicht mehr existiert.
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: FHEm2005 am 18 Januar 2016, 12:22:03
Ich kann nicht anders, aber ich muss mich den beiden "Vorpostern" anschließen. Die Kraft, die zwei getrennt laufenden Entwicklungen kosten, sollte IMHO lieber auf die Aktualisierung der ersten Seite verwendet werden. So ist in beiden Teillisten das Widget "multistatebutton" nicht zu finden. 

Ich suche bei z.B einen Fehler im multistatebuton bei mir und frage mich ob ich etwas übersehen habe. Das verunsichert unnötig.
Meine Kritik berührt nicht die Tatsache, dass hier ein UI geschaffen wurde, das nicht umsonst sich dieser hohen Beliebtheit erfreut. Dafür meinen besonderen Dank.

Macht allen Nutzern die Freude und schließt euch zusammen mit einem einzigen Repository und einem Update.

Viele Grüße
Eberhard
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: Loredo am 18 Januar 2016, 12:44:57
Es können ja auch gerne mehrere Repos sein, aber die Dateien dürfen sich dabei dann nicht überschneiden.
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: setstate am 18 Januar 2016, 13:52:39
Zu dem unschönen Schritt musste ich gehen, weil es zu viele Fragen zum nicht funktionierenden Button-Widget gab. Die nesges Version passte einfach nicht mehr.

Das Update für Widgets-for-fhem-tablet-ui braucht ihr aber auch nicht mehr aufrufen, solange dort nix neues liegt. Die letzte Aktivität war vor 4 Monaten.
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: Loredo am 18 Januar 2016, 14:25:17
Bezogen auf dieses eine Widget: Ok, liegen denn dafür zumindest alle notwendigen Daten im "offiziellen" Repo? Kann man nicht einfach alle Widgets von dort (und von sonst wo noch?) übernehmen? Normal ist es in Github ja nun wirklich kein Problem jedem Entwickler Zugriff aufs Repo zu geben oder eben mit Pull-Requests zu arbeiten (dafür lieben wir ja alle Github und ich trauere immer, dass wir das für FHEM nicht haben)... ansonsten kann man für die getrennte Pflege sicherlich auch eine Art "include" von anderen Repos bauen, so dass man als "User" nur ein einziges Repo in FHEM eintragen muss und die weiteren Repos zentral gepflegt werden können. Ich könnte mir vorstellen, dass Rudi da bei einem schlüssigen Konzept der letzte ist, der das nicht unterstützte (vermutlich würde ein direkter Patch noch mehr helfen ;-)).


Ich möchte eigentlich nicht bei einer Neuinstallation Dateien von zig Quellen ziehen, dann manuell gucken wer vereinzelt eine neuere Version hat, dann ggf. einige Quellen wieder entfernen und anschließend noch stetig manuell im Blick behalten wenn es weitere Änderungen gibt. Dafür ist eigentlich der zentrale Update Befehl da.
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: gloob am 09 Februar 2016, 10:52:43
Gibt es denn eine Möglichkeit das Update add wieder rückgängig zu machen?
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: Thorsten Pferdekaemper am 09 Februar 2016, 12:49:01
Zitat von: gloob am 09 Februar 2016, 10:52:43
Gibt es denn eine Möglichkeit das Update add wieder rückgängig zu machen?
Ja, "update delete".
Gruss,
   Thorsten
Titel: Antw:[FTUI] Updates überschneiden sich
Beitrag von: gloob am 09 Februar 2016, 13:00:55
Vielen Dank. Hätte natürlich auch in die CommandRef gucken können.