smartVISU v3.0

Begonnen von wvhn, 05 Februar 2021, 11:25:10

Vorheriges Thema - Nächstes Thema

wvhn

Hallo zusammen,

ich möchte mich hier kurz vorstellen. Mein Name ist Wolfram und ich bin der aktuelle Maintainer von smartVISU.
Ich habe am vergangenen Wochenende die v3.0 herausgebracht. Wie immer gibt es doch noch kleinere Fehler, wenn Software von einer breiteren Anwenderschaft genutzt wird und so kommt in den nächsten Tagen ein Wartungsrelease v3.0.1 heraus.

smartVISU wird in enger Zusammenarbeit mit den Entwicklern von smarthoneNG weiter entwickelt. Der Anspruch ist und bleibt aber weiterhin die Kompatibilität zu anderen Backends, wie z.B. FHEM. Da ich selbst FHEM nicht nutze, bin ich auf Eure Mitarbeit angewiesen. Konkret geht es um folgende Punkte:

  • In v3.0 wurden einige SV-eigene Widgets gelöscht, die schon in v2.9 deprecated waren. Diese müssen nun endgültig ersetzt werden. Seit v2.9 hat der Templatechecker Hinweise gegeben, wie diese Widgets zu ersetzen sind. Diese Funktion des Templatecheckers ist auch nach Löschen der alten Widgets noch verfügbar. Wenn Ihr in Eurer Community spezielle Widgets habt, die noch die veralteten Widgets nutzen, dann sollte jemand diese Widgets umstellen und der Community zur Verfügung stellen.
  • Seit smartVISU v2.9 basieren Widgets auf jQuery mobile und das Handling der items aus den Vorversionen ist deprectated. In der Entwicklerkonsole des Browsers wird dies seither mit der Meldung quittiert: "Plain old smartVISU widgets are deprecated. Use a jQuery widget based on $.sv.widget instead. Der veraltete Code ist deaktiviert, aber nur auskommentiert, um für Notfälle reaktivierbar zu sein. In v3.1 wird er dann definitiv gelöscht. Auch hier sind Freiwillige gesucht, die die Community-spezifischen Widgets umbauen und wieder zur Verfügung stellen.
  • In v3.0 gibt es den neuen Widget Assistenten und die erweiterte Prüfung von item-Typen im Template Checker. Beide Funktionen benötigen eine Datei namens "masteritem.json" im Verzeichnis der eigenen Seiten für die volle Funktionalität. Sie funktionieren eingeschränkt aber auch ohne die Datei. Die masteritem.json enthät eine Liste der item-Namen mit den zugehörigen item-Typen im json-Format. Hinweise gibt die README.md im Verzeichnis des Widget Assistenten (./lib/widget_assistant). Es gibt wohl erste Ansätze zur manuellen Erzeugung der Datei aus der Konfigurationsdatei "fhserver.fronthem.cfg". Vielleicht findet sich hier ein Freiwilliger, der dies für die Community automatisiert.

In meinem Profil in diesem Forum steht "newbie". Das wird auch so bleiben, denn ich kann unmöglich in zwei unterschiedlichen Foren Support geben. Themen zu smartVISU, die nicht speziell mit FHEM zusammen hängen, beantworte ich gerne im offiziellen Support-Forum: https://knx-user-forum.de/forum/supportforen/smartvisu

Gruß
Wolfram

Hackstall

Hallo ich möchte gerne nach SMARTVISU 3.0.1 migrieren aber:
1) ich habe aufwendigst alle depreceated umgestellt. Heidenarbeit!

dann

a) ich habe smarvisu301 Clone gezogen
b) ich habe mein Haus unter pages angelegt
c) ich habe _templates aus smartvisu in mein Haus kopiert
d) ich habe config.ini in smartvisu kopiert

aber es kommt immer:


                                                                      smartVISU
                                                            18:31, 14.02, v3.0.1
--------------------------------------------------------------------------------

Error occurred in twig-template engine!



Gibt es irgendwelche hingst denen ich nachgehen kann.

Danke Andreas

P.S.:
Ich bin unter Docker unterwegs.

P.P.S: Hättest Du für Umsteiger auch ev. von Docker eine Anleitung?

wvhn

Lösche mal die config.ini im neuen Verzeichnis und starte smartVisu erneut. dann wird als erstes eine Begrüßungsseite angezeigt, auf der verschiedene Voraussetzungen abgeprüft werden, u.a. die php-Version. 

Die Berechtigungen für das neue smartVISU Verzeichnis hast Du gesetzt?

Gruß
Wolfram

GammaTwin

Grüße,

ich habe auch docker im Einsatz. Nutze das image "php:7.4-apache". Wie ist Dein Setting, Hackstall?

Hackstall

Hallo ich habe php-7.3 installiert
Gruss Andreas

Hackstall

Hallo,

vielen Dank hat geklappt.

Mein Problem waren die Zugriffsrechte.

Gibt es noch etwas neues zu beachten oder zu empfehlen für smartvisu?

Danke und Gruss Andreas

Hackstall

Hallo noch eine Frage,

muss ich die _templates zwingend kopieren. Bisher läuft alles problemlos.

Gruss Andreas

wvhn

Wenn alles problemlos läuft, brauchst Du die Templates nicht zu kopieren.

Hinweise zu Neuigkeiten in v3.0 sind in der changelog.md, sowie in diesem Thread und v.a. In dem oben verlinkten Forum.

Gruß
Wolfram

GammaTwin

#8
Zitat von: wvhn am 05 Februar 2021, 11:25:10
  • In v3.0 gibt es den neuen Widget Assistenten und die erweiterte Prüfung von item-Typen im Template Checker. Beide Funktionen benötigen eine Datei namens "masteritem.json" im Verzeichnis der eigenen Seiten für die volle Funktionalität. Sie funktionieren eingeschränkt aber auch ohne die Datei. Die masteritem.json enthät eine Liste der item-Namen mit den zugehörigen item-Typen im json-Format. Hinweise gibt die README.md im Verzeichnis des Widget Assistenten (./lib/widget_assistant). Es gibt wohl erste Ansätze zur manuellen Erzeugung der Datei aus der Konfigurationsdatei "fhserver.fronthem.cfg". Vielleicht findet sich hier ein Freiwilliger, der dies für die Community automatisiert.

Grüße,

ich habe ein Script für die Erstellung der masteritem.json in ein DOIF gepackt. Trigger kann man es mit set di_fronthem_masteritem Erstellung Run

Erklärung der Einstellungen, userattr:





userattr_Pfad_fhserver_fronthem_cfgmit dem Pfad der fhserver.fronthem.cfg anpassen (inkl. des Dateinamens)
userattr_Pfad_masteritem.jsonmit dem Pfad der Ausgabe anpassen (inkl. des Dateinamens)
userattr_TypenHier werden Converter von fronthem in die Begriffe der masteriten.json übersetzt. Es können mehrere Converter einem Zielbegriff zugewiesen werden. Syntax:
Zielbegriff1:"Converter1","Converter2" Zielbegriff2:"Converter3"

Nicht zugewiesene Converter werden im Reading "unbekannterTyp" abgelegt.

RAW-Defintion:
defmod di_fronthem_masteritem DOIF ([$SELF:Erstellung] eq "Run") ({\
  ## Sicherung einlesen\
  my $fileName = AttrVal('$SELF', 'userattr_Pfad_fhserver_fronthem_cfg', '/Fehler');;\
  my ($err, @aContent) = FileRead({FileName => $fileName, ForceType => "file"});;\
  \
  ## Ersetzungstabelle\
  my @aTypen = split(' ', AttrVal('$SELF', 'userattr_Typen', ''));;\
  fhem("set $SELF unbekannterTyp");;\
  \
  ## Device finden und im Array sortieren\
  my @aDevice=();;\
  my $iDevice=0;;\
  my $iContent=0;;\
  while ($iContent < scalar @aContent) {\
    if (index($aContent[$iContent], '"') == AttrVal('$SELF', 'userattr_AnzLeerProEinrueck', '') * 2) {\
  @aDevice[$iDevice++] = $aContent[$iContent];;\
};;\
$iContent++;;\
  };;\
  @aDevice=sort {$a cmp $b} @aDevice;;\
  \
  ## eigentlicher Vorgang\
  my @aResult=();;\
  my $iResult=0;;\
  $iDevice=0;;\
  $iContent=0;;\
  ## alle Device (sortiertes Array) durchlaufen\
  while ($iDevice < scalar @aDevice) {\
## auf Device reagieren, ansonsten nächste Zeile\
if ($aContent[$iContent] eq $aDevice[$iDevice]) {\
  ## Device anhängen\
  @aResult[$iResult]=$aDevice[$iDevice] =~ /(".*)"/;;\
  @aResult[$iResult]=$aResult[$iResult]."|";;\
  ## Attribut "converter"\
  my $Attr="";;\
  $iContent++;;\
  while (index($aContent[$iContent], '"') > AttrVal('$SELF', 'userattr_AnzLeerProEinrueck', '') * 2) {\
    ## eigentliche regex: /.{9}"converter".*"(.*")"/\
my $regex=".".chr(123).(AttrVal('$SELF', 'userattr_AnzLeerProEinrueck', '') * 3).chr(125)."\"converter\".*\"(.*\")";;\
\
if ($aContent[$iContent] =~ /$regex/) { ## wenn im Converter in Gänsefüsschen steht\
  (my $AttrT = $1) =~ s/( .*)//;;\
  ## erstetzen\
  $Attr = "unkown";;\
  foreach my $Row (@aTypen) {\
  if ($Row =~ /($AttrT)/) {($Attr = $Row) =~ s/(:.*)/"/};;\
  };;\
  ## unbekannter Typ, wird entfernt, und in Reading "unbekannterTyp" geschrieben\
  if ($Attr eq "unkown") {\
    @aResult[$iResult]= "";;\
if (ReadingsVal('$SELF', 'unbekannterTyp', '') !~ /$AttrT/) {\
  fhem("set $SELF unbekannterTyp ".$AttrT.", ".ReadingsVal('$SELF', 'unbekannterTyp', ''));;\
};;\
  } else { ## bekannter Typ\
    @aResult[$iResult++]=@aResult[$iResult].$Attr.", ";;\
  };;   \
} elsif ($aContent[$iContent] =~ /.*"converter".*/) { ## restliche Converter, z.B. null\
  @aResult[$iResult]= "";;\
};;\
$iContent++;;\
  };;\
  ## nächster Device, ursprünglicher Inhalt von Beginn\
  $iDevice++;;\
  $iContent=0;;\
} else {\
  $iContent++;;\
};;\
  };;\
  @aResult[--$iResult] =~ s/(, )$//;; ## letztes Komma und Leerzeichen entfernen\
  \
  ## Datei schreiben\
  my $masteritem="";;\
  foreach my $Row (@aResult) {\
$masteritem=$masteritem.$Row;;\
  };;\
  $masteritem=chr(91).$masteritem.chr(93);;\
  open (DATEI, ">", AttrVal('$SELF', 'userattr_Pfad_masteritem_json', '/Fehler')) or die $!;;\
  print DATEI $masteritem;;\
  close (DATEI);;\
  \
  ## Aktion für beendet erklären\
  fhem("set $SELF Erstellung Done");;\
};;)
attr di_fronthem_masteritem userattr userattr_AnzLeerProEinrueck userattr_Pfad_fhserver_fronthem_cfg userattr_Pfad_masteritem_json userattr_Typen
attr di_fronthem_masteritem do always
attr di_fronthem_masteritem readingList Erstellung unbekannterTyp
attr di_fronthem_masteritem setList Erstellung:Run
attr di_fronthem_masteritem userattr_AnzLeerProEinrueck 3
attr di_fronthem_masteritem userattr_Pfad_fhserver_fronthem_cfg <Pfad zur fhserver.fronthem.cfg>
attr di_fronthem_masteritem userattr_Pfad_masteritem_json <Pfad für die Ausgabe der masteritem.json>
attr di_fronthem_masteritem userattr_Typen bool:"OnOff","bool_10" num:"NumDirect","NumDisplay"


edit: Musste nochmal an einer Regex nachbessern, Kommentierung verbessert

wvhn

Cool! Ich nehme einen Link auf diesen Post in die readme.md des Widget Assistant auf.
Danke!