Map Widget reloaded - Neue Version des Map Widgets

Begonnen von eki, 05 Oktober 2018, 16:04:19

Vorheriges Thema - Nächstes Thema

eki

Was passiert, wenn Du statt "label" "icon":"<icon-path>" verwendest (<icon-path> natürlich entsprechend Deinem Setup gesetzt)?

Sailor

#106
Hallo eki

Zitat von: eki am 30 Dezember 2020, 16:43:44
Was passiert, wenn Du statt "label" "icon":"<icon-path>" verwendest (<icon-path> natürlich entsprechend Deinem Setup gesetzt)?

Dieser Code:

data-feature_style = '{ "popup_properties_click":"name addr.street addr.housenumber addr.postcode addr.city speedcam.vmax speedcam.direction",
"popup_properties_move":"name",
"display_styles":{
"emergency.pharmacy":{"label":"fa-cube","strokeColor":"green"},
"vmax.30" :{"label":"fa-camera"}
}
}'


ergibt Picture1.png

Dieser Code:

data-feature_style = '{ "popup_properties_click":"name addr.street addr.housenumber addr.postcode addr.city speedcam.vmax speedcam.direction",
"popup_properties_move":"name",
"display_styles":{
"emergency.pharmacy":{"label":"fa-cube","strokeColor":"green"},
"vmax.30" :{"icon":"images/Blitzer2.png"}
}
}'

führt zu Fehlermeldung in Picture2.png

Dieser Code:

data-feature_style = '{ "popup_properties_click":"name addr.street addr.housenumber addr.postcode addr.city speedcam.vmax speedcam.direction",
"popup_properties_move":"name",
"display_styles":{
"emergency.pharmacy":{"label":"fa-cube","strokeColor":"green"},
"vmax.30" :{"icon":"images/Blitzer2.png", "width":"50, "height":"50"}
}
}'

fuehrt zu Picture3.png


Scheinbar ist "icon" noch nicht richtig in der Widget_maps.js Zeile 1555 umgesetzt.  ???

Gruß
    Sailor
******************************
Man wird immer besser...

eki

Das werde ich mir die Tage noch mal in Ruhe anschauen lässt sich aber sicher hinkriegen. Jetzt ist erst mal Silvester, Guten Rutsch!

Sailor

Hallo eki

Zitat von: eki am 31 Dezember 2020, 15:27:12
Das werde ich mir die Tage noch mal in Ruhe anschauen lässt sich aber sicher hinkriegen. Jetzt ist erst mal Silvester, Guten Rutsch!

Dir auch einen guten Rutsch!
Und Danke!

Gruß
    Sailor
******************************
Man wird immer besser...

Sailor

#109
Ein herzerfrischendes Moin vom achtern Diek

So, ich habe meine "99_myUtils.pm" schon mal so weit, das es mit eine GEOJSON - Datei generiert auf Basis von Readings der einzelnen Module:

global: Gobale latitude, logitude fuer die Home-Location: https://wiki.fhem.de/wiki/Global
Blitzer - Die berühmten Blitzer: https://wiki.fhem.de/wiki/Stra%C3%9Fenverkehr_Blitzer
HTTPMOD - Die naechste Notfallapotheke, welche gerade Dienst hat: https://forum.fhem.de/index.php?topic=87234.0
geofancy - Die Position der Hausbewohner: https://wiki.fhem.de/wiki/GEOFANCY

Am Anfang der Sub muss man den Ort der GEOJSON - Datei angeben und in den $Activate... die entsprechenden Bloecke aktivieren.


###START########## GEO-JSON - Generator #########################################################################START###
sub GeoJsonGenerator() {
### Define filepath for GEOJSON file
my $GeojsonFilePath = "/opt/fhem/www/tablet/geojson/features.geojson";

Log 2, "GeoJsonGenerator : GEO JSON Generator initiated";

### Define which GEOJSON features shall be activated
my $ActivateHome     = 1;
my $ActivateGeoFancy = 1;
my $ActivatePharmacy = 1;
my $ActivateSpeedcam = 1;


### Generate Timestamp
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $TimeStamp = $year+1900 . "-" . $mon . "-" . $yday . "T" . $hour . ":" . $min . ":" . $sec;
Log 2, "GeoJsonGenerator : TimeStamp                                        : " . $TimeStamp;

### GEOJSON string header
my $GeoJsonString = "
{
\"type\": \"FeatureCollection\",
\"generator\": \"fhem\",
\"copyright\": \"The data included in this document is generated by www.fhem.de. The data is made available under GPL.\",
\"timestamp\": \"" . $TimeStamp . "Z\",
\"features\": [
";


### START Generate GEOJSON entry for own position based on global attribute ######
### Global Attribute "longitude" and "latitude" must be set
if ($ActivateHome == 1) {
my $HomeLocationName = "Home";
my $Longitude        = AttrVal("global", "longitude", 0);
my $Latitude         = AttrVal("global", "latitude",  0);

if ($Longitude != 0) {
$GeoJsonString .= "
{
\"type\": \"Feature\",
\"properties\": {
\"name\": \"" . $HomeLocationName . "\",
\"type\": \"point\",
\"personal\": \"home\"
},
\"geometry\": {
\"type\": \"Point\",
\"coordinates\": [
" . $Longitude . ",
" . $Latitude  . "
]
}
},";
Log 2, "GeoJsonGenerator : Home Location added                              : " . $HomeLocationName;
}

}
### END Generate GEOJSON entry for own position based on global attribute ######


### START Generate GEOJSON entry for emergency pharmacy ##########################
### https://forum.fhem.de/index.php?topic=87234.0
if ($ActivatePharmacy == 1) {

### Define fhem Device Name which includes the Readings and the Readings below ###
my $DeviceName           = "OS_PharmacyEmergency";
my $ReadingNameLongitude = "Längengrad";
my $ReadingNameLatitude  = "Breitengrad";
my $ReadingNamePostcode  = "Plz";
my $ReadingNameAponame   = "Name";
my $ReadingNameStreet    = "Strasse";
my $ReadingNamePhone     = "Telefon";
my $ReadingNameStart     = "Beginn";
my $ReadingNameCity      = "Ort";
my $ReadingNameEnd       = "Ende";

my $Longitude            = ReadingsVal($DeviceName, $ReadingNameLongitude, 0);
my $Latitude             = ReadingsVal($DeviceName, $ReadingNameLatitude,  0);
my $Postcode             = ReadingsVal($DeviceName, $ReadingNamePostcode,  0);
my $Aponame              = ReadingsVal($DeviceName, $ReadingNameAponame,   0);
my $Street               = ReadingsVal($DeviceName, $ReadingNameStreet,    0);
my $Phone                = ReadingsVal($DeviceName, $ReadingNamePhone,     0);
my $Start                = ReadingsVal($DeviceName, $ReadingNameStart,     0);
my $City                 = ReadingsVal($DeviceName, $ReadingNameCity,      0);
my $End                  = ReadingsVal($DeviceName, $ReadingNameEnd,       0);
my $Dauer                = $Start . "-" . $End;

if ($Longitude != 0) {
$GeoJsonString .= "
{
\"type\": \"Feature\",
\"properties\": {
\"name\": \"" . $Aponame  . "\",
\"addr:city\": \"". $City . "\",
\"addr:street\": \"" . $Street . "\",
\"addr:postcode\": \"" . $Postcode . "\",
\"addr:phone\": \"" . $Phone . "\",
\"timeframe\": \"" . $Dauer . "\",
\"type\": \"point\",
\"emergency\": \"pharmacy\"
},
\"geometry\": {
\"type\": \"Point\",
\"coordinates\": [
" . $Longitude . ",
" . $Latitude  . "
]
}
},";
Log 2, "GeoJsonGenerator : Pharmacy added                                   : " . $Aponame;
}

}
### END Generate GEOJSON entry for emergency pharmacy ##########################


### START Generate GEOJSON entry for speedcams #################################
### Based on https://wiki.fhem.de/wiki/Stra%C3%9Fenverkehr_Blitzer

if ($ActivateSpeedcam == 1) {

### Define fhem Device Name and maximum number of indicated speedcams ###
my $DeviceName           = "OS_SpeedCam";
my $MaxNumberSpeedcams   = AttrVal($DeviceName, "MaxSpeedCameras", 0);

### Define the postfix of Readingnames (without the leading 2 numbers ###
my $ReadingNameLongitude = "lng";
my $ReadingNameLatitude  = "lat";
my $ReadingNameVmax      = "vmax";
my $ReadingNameAddress   = "display_name";


### Read all SpeedCam Readings
for(my $i = 0; $i <= $MaxNumberSpeedcams; $i++) {

my $ReadingNamePrefix = sprintf("%02d", $i);

my $ReadingNameLongitudeComplete = $ReadingNamePrefix . $ReadingNameLongitude;
my $ReadingNameLatitudeComplete  = $ReadingNamePrefix . $ReadingNameLatitude;
my $ReadingNameVmaxComplete      = $ReadingNamePrefix . $ReadingNameVmax;
my $ReadingNameAddressComplete   = $ReadingNamePrefix . $ReadingNameAddress;

my $Longitude                    = ReadingsVal($DeviceName, $ReadingNameLongitudeComplete, 0);
my $Latitude                     = ReadingsVal($DeviceName, $ReadingNameLatitudeComplete,  0);
my $Vmax = ReadingsVal($DeviceName, $ReadingNameVmaxComplete,  0);
my $AddressComplete              = ReadingsVal($DeviceName, $ReadingNameAddressComplete,   0);

if ($Longitude != 0) {
$GeoJsonString .= "
{
\"type\": \"Feature\",
\"properties\": {
\"name\": \"" . $AddressComplete  . "\",
\"vmax\": \"" . $Vmax  . "\",
\"type\": \"point\",
\"traffic\": \"speedcam\"
},
\"geometry\": {
\"type\": \"Point\",
\"coordinates\": [
" . $Longitude . ",
" . $Latitude  . "
]
}
},";
Log 2, "GeoJsonGenerator : Speedcam added                                   : " . $Vmax . "-" . $AddressComplete;
}
}
}
### END Generate GEOJSON entry for speedcams #################################


### START Generate GEOJSON entry for Geofancy ################################
### Based on https://wiki.fhem.de/wiki/GEOFANCY
if ($ActivateGeoFancy == 1) {

### Define fhem Device Name and maximum number of indicated speedcams ###
my $DeviceName           = "geofancy";
my @RoommateNameList     = ("Papa", "Mama", "Tochter", "Sohn");

### Define the prefix of Readingnames
my $ReadingNameLongitude = "currLocLong_";
my $ReadingNameLatitude  = "currLocLat_";
my $ReadingNameLocation  = "currLoc_";
my $ReadingNameLastupd   = "currPosTime_";
my $ReadingNameMotion    = "currPosMotion_";
my $ReadingNameTarrival  = "lastPosArr_";


foreach my $RommmateName (@RoommateNameList) {

### Obtain geofency values from dedicated user readings
my $Longitude = ReadingsVal($DeviceName, $ReadingNameLongitude . $RommmateName, 0);
my $Latitude  = ReadingsVal($DeviceName, $ReadingNameLatitude  . $RommmateName, 0);
my $Location  = ReadingsVal($DeviceName, $ReadingNameLocation  . $RommmateName, 0);
my $Lastupd   = ReadingsVal($DeviceName, $ReadingNameLastupd   . $RommmateName, 0);
my $Motion    = ReadingsVal($DeviceName, $ReadingNameMotion    . $RommmateName, 0);
my $Tarrival  = ReadingsVal($DeviceName, $ReadingNameTarrival  . $RommmateName, 0);

### If the coordinates (longitude) exist
if ($Longitude != 0) {

$GeoJsonString .= "
{
\"type\": \"Feature\",
\"properties\": {
\"name\": \"" . $RommmateName . "\",
\"location\": \"" . $Location . "\",
\"lastupdate\": \"" . $Lastupd . "\",
\"motion\": \"" . $Motion . "\",
\"arrival\": \"" . $Tarrival . "\",
\"type\": \"point\",
\"personal\": \"" . $RommmateName . "\"
},
\"geometry\": {
\"type\": \"Point\",
\"coordinates\": [
" . $Longitude . ",
" . $Latitude  . "
]
}
},";
Log 2, "GeoJsonGenerator : Personal location added                          : " . $RommmateName;
}
}
}
### END Generate GEOJSON entry for Geofancy #################################


### Delete last "," seperator
$GeoJsonString =~ s/,+$//;

### Close up GEOJSON String
$GeoJsonString .= "
]
}";


Log 2, "GeoJsonGenerator : GeoJsonString                                    : " . $GeoJsonString;

### Write GeoJson String into file
open(my $FH, ">" . $GeojsonFilePath) or die $!;
print $FH $GeoJsonString;
close($FH);
}


Die entsprechende Widget_Maps - Aufruf sieht dann so aus:


<div id = "TraffictMapBig"
style = "height:100%; width:100%;"
class = "fullsize"
data-type = "maps"
data-map_type = "OSM"
data-showdetails = "true"
data-mapgroup = "1"
data-language = "en"
data-scrollgroup = "1"
data-traffic = "true"
data-zoom = "10"
data-stroke = "#FF0000,30,80"
data-geojson        = "geojson/features.geojson"
data-feature_style = '{ "popup_properties_click":"name street city vmax",
"popup_properties_move":"name",
"display_styles":{
"personal.home":{"label":"fa-home","strokeColor":"black"},
"personal.Papa":{"label":"fa-user","strokeColor":"yellow"},
"personal.Mama":{"label":"fa-user","strokeColor":"red"},
"personal.Tochter":{"label":"fa-user","strokeColor":"green"},
"personal.Sohn":{"label":"fa-user","strokeColor":"blue"},
"emergency.pharmacy":{"label":"fa-cube","strokeColor":"green"},
"vmax.":{"label":"fa-camera","strokeColor":"red"},
"vmax.10":{"label":"fa-camera","strokeColor":"red"},
"vmax.20":{"label":"fa-camera","strokeColor":"red"},
"vmax.30":{"label":"fa-camera","strokeColor":"red"},
"vmax.30":{"label":"fa-camera","strokeColor":"red"},
"vmax.40":{"label":"fa-camera","strokeColor":"red"},
"vmax.50":{"label":"fa-camera","strokeColor":"red"},
"vmax.60":{"label":"fa-camera","strokeColor":"red"},
"vmax.70":{"label":"fa-camera","strokeColor":"red"},
"vmax.80":{"label":"fa-camera","strokeColor":"red"},
"vmax.90":{"label":"fa-camera","strokeColor":"red"},
"vmax.100":{"label":"fa-camera","strokeColor":"red"},
"vmax.110":{"label":"fa-camera","strokeColor":"red"},
"vmax.120":{"label":"fa-camera","strokeColor":"red"}
}
}'>
</div>


Offene Probleme:
a) Es lassen sich keine png-Bilder als icon im Widget definieren - eki ist aber dran
b) Es laesst sich noch kein Zeitrahmen definieren, nach wieviel Sekunden das Maps_Widget seine GEOJSON Datei automatisch neu einliest - eki ist hoffentlich auch dran.

Viel Spass damit!

Gruss
    Sailor
******************************
Man wird immer besser...

eki

#110
ZitatOffene Probleme:
a) Es lassen sich keine png-Bilder als icon im Widget definieren - eki ist aber dran
b) Es laesst sich noch kein Zeitrahmen definieren, nach wieviel Sekunden das Maps_Widget seine GEOJSON Datei automatisch neu einliest - eki ist hoffentlich auch dran.

Zu a): Ich habe eine neue Version gemacht und angehängt. Bitte mal testen.
Zu b): Bisher wurde die Karte neu gezeichnet, wenn beim in der Karte angegebenen Device (data-device setzen), ein Reading triggerRedraw einen event bekommt. Ich habe das jetzt mal in der neuen Version so gemacht, das das Neumalen stattfindet, wenn das INTERNAL "STATE" (oder das mit data-get gesetzte Reading) einen Event bekommt. Ein Zeitgesteuertes Neuladen passiert bisher nicht, weil ich der Meinung bin, dass das immer aus FHEM heraus passieren sollte (z.B. mit Notify). Falls es unbedingt sein muss, könnte ich das aber auch noch einbauen.

Sailor

Hallo eki

Zitat von: eki am 07 Januar 2021, 14:19:32
Zu a): Ich habe eine neue Version gemacht und angehängt. Bitte mal testen.
Zu b): Bisher wurde die Karte neu gezeichnet, wenn beim in der Karte angegebenen Device (data-device setzen), ein Reading triggerRedraw einen event bekommt. Ich habe das jetzt mal in der neuen Version so gemacht, das das Neumalen stattfindet, wenn das INTERNAL "STATE" (oder das mit data-get gesetzte Reading) einen Event bekommt. Ein Zeitgesteuertes Neuladen passiert bisher nicht, weil ich der Meinung bin, dass das immer aus FHEM heraus passieren sollte (z.B. mit Notify). Falls es unbedingt sein muss, könnte ich das aber auch noch einbauen.

b) Ich gebe dir Recht, das kann ich besser lösen.

a) Habe folgendes versucht

Die Bilddatei liegt in /opt/fhem/www/tablet/images/Blitzer2.png
Rechte: -rwxrwxrwx

Die "display_styles":{ sahen wie folgt aus:

1.

"vmax.":   {"icon":"images/Blitzer2.png"},
"vmax.10": {"icon":"images/Blitzer2.png"},
"vmax.20": {"icon":"images/Blitzer2.png"},
"vmax.30": {"icon":"images/Blitzer2.png"},
"vmax.30": {"icon":"images/Blitzer2.png"},
"vmax.40": {"icon":"images/Blitzer2.png"},
"vmax.50": {"icon":"images/Blitzer2.png"},
"vmax.60": {"icon":"images/Blitzer2.png"},
"vmax.70": {"icon":"images/Blitzer2.png"},
"vmax.80": {"icon":"images/Blitzer2.png"},
"vmax.90": {"icon":"images/Blitzer2.png"},
"vmax.100":{"icon":"images/Blitzer2.png"},
"vmax.110":{"icon":"images/Blitzer2.png"},
"vmax.120":{"icon":"images/Blitzer2.png"}


2.

"vmax.":   {"icon":"./images/Blitzer2.png"},
"vmax.10": {"icon":"./images/Blitzer2.png"},
"vmax.20": {"icon":"./images/Blitzer2.png"},
"vmax.30": {"icon":"./images/Blitzer2.png"},
"vmax.30": {"icon":"./images/Blitzer2.png"},
"vmax.40": {"icon":"./images/Blitzer2.png"},
"vmax.50": {"icon":"./images/Blitzer2.png"},
"vmax.60": {"icon":"./images/Blitzer2.png"},
"vmax.70": {"icon":"./images/Blitzer2.png"},
"vmax.80": {"icon":"./images/Blitzer2.png"},
"vmax.90": {"icon":"./images/Blitzer2.png"},
"vmax.100":{"icon":"./images/Blitzer2.png"},
"vmax.110":{"icon":"./images/Blitzer2.png"},
"vmax.120":{"icon":"./images/Blitzer2.png"}



"vmax.":   {"icon":"../images/Blitzer2.png"},
"vmax.10": {"icon":"../images/Blitzer2.png"},
"vmax.20": {"icon":"../images/Blitzer2.png"},
"vmax.30": {"icon":"../images/Blitzer2.png"},
"vmax.30": {"icon":"../images/Blitzer2.png"},
"vmax.40": {"icon":"../images/Blitzer2.png"},
"vmax.50": {"icon":"../images/Blitzer2.png"},
"vmax.60": {"icon":"../images/Blitzer2.png"},
"vmax.70": {"icon":"../images/Blitzer2.png"},
"vmax.80": {"icon":"../images/Blitzer2.png"},
"vmax.90": {"icon":"../images/Blitzer2.png"},
"vmax.100":{"icon":"../images/Blitzer2.png"},
"vmax.110":{"icon":"../images/Blitzer2.png"},
"vmax.120":{"icon":"../images/Blitzer2.png"}


Ergebnis: Bei allen drei keine Anzeige der Blitzer2 - Kamera.  :'(

Gruss
    Sailor
******************************
Man wird immer besser...

eki

In Deinem Fall müssten eigentlich Die Varianten 1 und 2 passen. Kannst Du mal die gesamte Definition des Map Widgets schicken und am besten auch noch die GEOJSON Datei oder ein Listing des Blitzer Devices und das Bild.

Sailor

Zitat von: eki am 07 Januar 2021, 21:42:31
In Deinem Fall müssten eigentlich Die Varianten 1 und 2 passen. Kannst Du mal die gesamte Definition des Map Widgets schicken und am besten auch noch die GEOJSON Datei oder ein Listing des Blitzer Devices und das Bild.

Die Definition:


<div id = "TraffictMapBig"
style = "height:100%; width:100%;"
class = "fullsize"
data-type = "maps"
data-map_type = "OSM"
data-showdetails = "true"
data-mapgroup = "1"
data-language = "en"
data-scrollgroup = "1"
data-traffic = "true"
data-center = "53.569531,9.619997"
data-zoom = "10"
data-stroke = "#FF0000,30,80"
data-geojson       = "geojson/features.geojson"
data-feature_style = '{ "popup_properties_click":"name street city vmax",
"popup_properties_move":"name",
"display_styles":{
"personal.home":{"label":"fa-home","strokeColor":"black"},
"personal.Papa":{"label":"fa-user","strokeColor":"yellow"},
"personal.Mama":{"label":"fa-user","strokeColor":"red"},
"personal.Tochter":{"label":"fa-user","strokeColor":"green"},
"personal.Sohn":{"label":"fa-user","strokeColor":"blue"},
"emergency.pharmacy":{"label":"fa-cube","strokeColor":"green"},
"vmax.":{"icon":"./images/Blitzer2.png"},
"vmax.10":{"icon":"./images/Blitzer2.png"},
"vmax.20":{"icon":"./images/Blitzer2.png"},
"vmax.30":{"icon":"./images/Blitzer2.png"},
"vmax.30":{"icon":"./images/Blitzer2.png"},
"vmax.40":{"icon":"./images/Blitzer2.png"},
"vmax.50":{"icon":"./images/Blitzer2.png"},
"vmax.60":{"icon":"./images/Blitzer2.png"},
"vmax.70":{"icon":"./images/Blitzer2.png"},
"vmax.80":{"icon":"./images/Blitzer2.png"},
"vmax.90":{"icon":"./images/Blitzer2.png"},
"vmax.100":{"icon":"./images/Blitzer2.png"},
"vmax.110":{"icon":"./images/Blitzer2.png"},
"vmax.120":{"icon":"./images/Blitzer2.png"}
}
}'>
</div>


GEOJSON und Datei im Anhang

Gruss
    Sailor
******************************
Man wird immer besser...

Sailor

#114
Hallo eki

Zitat von: eki am 07 Januar 2021, 14:19:32
Zu b): Bisher wurde die Karte neu gezeichnet, wenn beim in der Karte angegebenen Device (data-device setzen), ein Reading triggerRedraw einen event bekommt. Ich habe das jetzt mal in der neuen Version so gemacht, das das Neumalen stattfindet, wenn das INTERNAL "STATE" (oder das mit data-get gesetzte Reading) einen Event bekommt.

Ich habe mir ein dummy gebaut und das map widget (data-device) macht scheinbar auch ein Reload sobald der dummy geändert wird.
Allerdings wird die neue GEOJSON - Datei dabei nicht neu eingeladen. Dies geschieht erst nach einem F5 im Browser...

Gruß
    Sailor
******************************
Man wird immer besser...

eki

Zu den fehlenden Bildern: Ich habe gerade keinen Zugriff auf meinen Rechner, daher erst mal eine Vermutung. Die Größe der Symbole leitet das Widget aus der FontSize ab. Die ist bei Dir nirgends angegeben, daher kann es sein, dass die Bildchen mit Größe 0 gezeichnet werden. Versuche mal so etwas:
"vmax.":{"icon":"./images/Blitzer2.png","fontSize":"25px"},

Das mit dem Reload des Json Files muss ich mir noch mal anschauen.

Sailor

Hallo eki

Zitat von: eki am 08 Januar 2021, 18:45:18
Zu den fehlenden Bildern: Ich habe gerade keinen Zugriff auf meinen Rechner, daher erst mal eine Vermutung. Die Größe der Symbole leitet das Widget aus der FontSize ab. Die ist bei Dir nirgends angegeben, daher kann es sein, dass die Bildchen mit Größe 0 gezeichnet werden. Versuche mal so etwas:
"vmax.":{"icon":"./images/Blitzer2.png","fontSize":"25px"},

Nope, leider nicht!

Gruß
    Sailor
******************************
Man wird immer besser...

eki

Lass mal den Punkt bei ,,vmax." weg. Ansonsten musst Du warten, ich probierst mal mit Deinen Daten wenn ich wieder am Rechner bin.

Sailor

Zitat von: eki am 08 Januar 2021, 19:21:21
Lass mal den Punkt bei ,,vmax." weg. Ansonsten musst Du warten, ich probierst mal mit Deinen Daten wenn ich wieder am Rechner bin.

Auch nix, haette mich auch gewundert, das es ja mit "vmax." und einem "label" funktioniert.

Aber Danke das du dran bleibst... Kein Stress

Gruß
    Sailor
******************************
Man wird immer besser...

eki

#119
So, ich habe jetzt mal mit Deinen Daten ein bisschen herumgespielt, einige Anpassungen machen müssen und eine neue Version des Widgets hier angehängt (bitte mal damit testen). Damit werden zumindest bei mir die Bilder dargestellt. Allerdings gibt es auch noch was bei Dir anzupassen.
Das Widget nimmt als Basis für die Icons den Ordner images im fhem Basisverzeichnis (per Default wäre das "www/images"). Daher müssten Deine Einträge unter der Annahme dass Deine Bilder im Verzeichnis "www/tablet/images" stehen im HTML folgendermaßen aussehen (das erste Beispiel würde nur das Icon malen, das zweite Beispiel schreibt dann auch noch die Zahl in das Bild mit rein):


"vmax.70":{"icon":"../tablet_272/images/Blitzer2.png"},
"vmax.80":{"label":"80","icon":"../tablet/images/Blitzer2.png","fontSize":"15px","strokeColor":"black"},


Das Reload Thema fehlt hier noch.