FHEM Forum

FHEM => Frontends => fronthem / smartVISU => Thema gestartet von: wvhn am 05 Februar 2021, 11:25:10

Titel: smartVISU v3.0
Beitrag von: wvhn am 05 Februar 2021, 11:25:10
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 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
Titel: smartVISU v2.9.2 -> v3.0(.1) Umstellung
Beitrag von: Hackstall am 14 Februar 2021, 18:37:23
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?
Titel: Antw:smartVISU v3.0
Beitrag von: wvhn am 14 Februar 2021, 22:33:20
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
Titel: Antw:smartVISU v3.0
Beitrag von: GammaTwin am 15 Februar 2021, 13:43:48
Grüße,

ich habe auch docker im Einsatz. Nutze das image "php:7.4-apache". Wie ist Dein Setting, Hackstall?
Titel: Antw:smartVISU v3.0
Beitrag von: Hackstall am 15 Februar 2021, 20:07:57
Hallo ich habe php-7.3 installiert
Gruss Andreas
Titel: Antw:smartVISU v3.0
Beitrag von: Hackstall am 15 Februar 2021, 20:29:24
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
Titel: Antw:smartVISU v3.0
Beitrag von: Hackstall am 15 Februar 2021, 20:38:28
Hallo noch eine Frage,

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

Gruss Andreas
Titel: Antw:smartVISU v3.0
Beitrag von: wvhn am 15 Februar 2021, 21:08:18
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
Titel: Antw:smartVISU v3.0
Beitrag von: GammaTwin am 23 Februar 2021, 17:39:25
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
Titel: Antw:smartVISU v3.0
Beitrag von: wvhn am 23 Februar 2021, 22:51:46
Cool! Ich nehme einen Link auf diesen Post in die readme.md des Widget Assistant auf.
Danke!