RSSI Werte schnell und nach CUL/CUN/HMLAN Devices als Tabelle dargestellt NEUE!

Begonnen von fhem-challenge, 08 Dezember 2016, 15:38:44

Vorheriges Thema - Nächstes Thema

fhem-challenge

Zitat von: sledge am 14 Januar 2017, 16:05:24
OK.

Hier die Änderungen ;-) Ging dann doch fix:

Hier habe ich nur den CUL_MAX hinzugefügt:

my @culs=devspec2array("TYPE=HMLAN");
push(@culs, devspec2array("TYPE=CUL"));
push(@culs, devspec2array("TYPE=CUL_RFR"));
push(@culs, devspec2array("TYPE=CUL_MAX"));
push(@culs, devspec2array("TYPE=HMCCUDEV"));



Weiter unten dann nur die Fallunterscheidung, ob es sich um einen CULMAX handelt oder nicht - bei mir geht das aus den Namenskonventionen leicht hervor - ansonsten müsste man sich erst noch TYPE holen...

foreach(@culs)
{
                        #Check if Device is a CULMAX
                        if ($_ =~ /CULMAX/)
                        {
                                $cul_rssi="RSSI";     
                        }
                        else
                        {
        $cul_rssi="$_"."_RSSI";
                        }


Für mich erzielt es das gewünschte.

Danke nochmal für den Code.

Hallo Tom,


ich habe den CUL_MAX nun auch im Code angepasse und zusätzlich ...


if (InternalVal("$_","type","") eq "CUL_MAX")\
{\
$cul_rssi="RSSI"\
}\
else\
{\
$cul_rssi="$_"."_RSSI"\
}\



... eingefügt, damit wird es auch anderen usern mit einem CUL_MAX (unabhängig von der Devicebezeichnung) möglich, den Code zu nutzen.

Ich selbst besitze kein MAX (CUL): Frage: Lautet die internal Variable tatsächlich nur "RSSI" ? ... das hatte ich jetzt einmal angenommen und im Code eingefügt.


Viele Grüße!

Andreas

sledge

Hi Andreas,


das Internal des MAX!-Devices lautet in der Tat nur RSSI:

Internals:
   CFGFN
   CHANGED
   DEF        WallMountedThermostat 136daf
   FZ.ELW.CULMAX_MSGCNT 173
   FZ.ELW.CULMAX_TIME 2017-01-15 09:37:44
   IODev      FZ.ELW.CULMAX
   LASTInputDev WZ.EG.CULMAX
   MSGCNT     318
   NAME       AN.OG.WT
   NR         149
   RSSI       -64
   STATE      18.0 °C
   TYPE       MAX
   WZ.EG.CULMAX_MSGCNT 145
   WZ.EG.CULMAX_TIME 2017-01-15 09:43:34
   addr       136daf
   backend    FZ.ELW.CULMAX
   rferror    0
   type       WallMountedThermostat
   Helper:
     Dblog:
       Battery:
         Dblog:
           TIME       1484423815.28377
           VALUE      ok
       Desiredtemperature:
         Dblog:
           TIME       1484469640.95677
           VALUE      18.0
       Temperature:
         Dblog:
           TIME       1484469640.95677
           VALUE      21.5
   Readings:
     2016-12-17 17:36:19   MAXLAN_error    0
     2016-12-17 17:36:19   MAXLAN_errorInCommand
     2016-12-17 17:36:19   MAXLAN_initialized 1
     2016-12-17 17:36:19   MAXLAN_isAnswer 0
     2016-12-17 17:36:19   MAXLAN_valid    1
     2017-01-15 09:43:34   RSSI            -64
     2016-12-17 22:16:45   TimeInformationHour 1
     2017-01-14 20:57:01   battery         ok
     2016-12-17 22:20:05   boostDuration   25
     2016-12-17 22:20:05   boostValveposition 80
     2016-12-17 22:20:05   comfortTemperature 21.0
     2017-01-15 09:43:34   deltaTemp       3.5
     2017-01-15 09:43:34   desiredTemperature 18.0
     2017-01-14 20:57:01   displayActualTemperature 1
     2016-12-17 22:20:05   ecoTemperature  17.0
     2016-12-17 22:20:05   firmware        1.0
     2016-12-17 22:20:05   groupid         0
     2016-12-17 22:20:05   maximumTemperature on
     2016-12-17 22:20:05   measurementOffset 0.0
     2016-12-17 22:20:05   minimumTemperature off
     2017-01-14 20:57:01   mode            manual
     2017-01-15 08:56:31   msgcnt          123
     2017-01-15 09:43:34   state           18.0 °C
     2017-01-15 09:43:34   temperature     21.5
     2016-12-17 22:20:05   testresult      255
     2016-12-17 22:20:05   weekprofile-0-Sat-temp 17.0 °C  /  21.0 °C  /  17.0 °C
     2016-12-17 22:20:05   weekprofile-0-Sat-time 00:00-06:00  /  06:00-22:00  /  22:00-00:00
     2016-12-17 22:20:05   weekprofile-1-Sun-temp 17.0 °C  /  21.0 °C  /  17.0 °C
     2016-12-17 22:20:05   weekprofile-1-Sun-time 00:00-06:00  /  06:00-22:00  /  22:00-00:00
     2016-12-17 22:20:05   weekprofile-2-Mon-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2016-12-17 22:20:05   weekprofile-2-Mon-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2016-12-17 22:20:05   weekprofile-3-Tue-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2016-12-17 22:20:05   weekprofile-3-Tue-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2016-12-17 22:20:05   weekprofile-4-Wed-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2016-12-17 22:20:05   weekprofile-4-Wed-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2016-12-17 22:20:05   weekprofile-5-Thu-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2016-12-17 22:20:05   weekprofile-5-Thu-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2016-12-17 22:20:05   weekprofile-6-Fri-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2016-12-17 22:20:05   weekprofile-6-Fri-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2016-12-17 22:20:05   windowOpenTemperature 12.0
   Internals:
     interfaces thermostat;temperature;battery
Attributes:
   DbLogInclude battery,desiredTemperature,temperature
   IODev      FZ.ELW.CULMAX
   alias      OG Ankleide Eltern
   event-min-interval battery:86400,desiredTemperature:600,temperature:300
   event-on-change-reading battery,desiredTemperature,temperature
   group      Thermostate
   icon       max_wandthermostat
   room       MAX
   userReadings deltaTemp {sprintf("%.1f",ReadingsVal("AN.OG.WT","temperature","")-ReadingsVal("AN.OG.WT","desiredTemperature",""))}
   userattr   Ther Ther_map structexclude


Im CULMAX lautet das

nternals:
   CFGFN
   DEF        060606
   FZ.ELW.CULMAX_MSGCNT 3
   FZ.ELW.CULMAX_TIME 2017-01-15 06:58:41
   FZ.ELW.CUL_MSGCNT 7347
   FZ.ELW.CUL_RAWMSG Z0F54040312345606060600110F093B51
   FZ.ELW.CUL_RSSI -64.5
   FZ.ELW.CUL_TIME 2017-01-15 09:59:19
   IODev      FZ.ELW.CUL
   LASTInputDev FZ.ELW.CUL
   MSGCNT     7350
   NAME       FZ.ELW.CULMAX
   NR         135
   STATE      Defined
   TYPE       CUL_MAX
   WZ.EG.CUL_MSGCNT 1852
   WZ.EG.CUL_RAWMSG Z0C270442136DAF0000000024D7
   WZ.EG.CUL_RSSI -64.5
   WZ.EG.CUL_TIME 2017-01-15 09:57:54
   addr       060606
   cnt        0
   pairmode   0
   retryCount 0


Daher wurde der CUL_MAX ja auch so schön in der ersten Spalte einsortiert, als wäre er ein Enddevice.

Jetzt stelle ich fest, dass bei allen MAX!-Devices der gleiche RSSI-Wert steht, obwohl ich zwei Cubes im Einsatz habe. Aber bei den MAX!-Devices selber habe ich auch nur diesen Wert stehen - also nicht je CUL_MAX einen eigenen (wie zB bei Homematic).

Danke für die Änderung im Code.

Tom


FHEM: debian Intel-NUC / 25 x MAX!, 15 x HM-bidcos, MQTT, 3 x 1wire, 20 x Shelly, 20 x Tasmota, 12 x Yeelight, Opentherm-GW, Espeasy, alexa-fhem, kodi, unifi, musiccast, ...

sig10680

Hallo,
vielleicht kann mir jemand helfen.
Ich bekomme immer den Fehler im Log.
Ich denke es fehlt eine Klammer oder so.
Habe auch schon mehrfach versucht den Code neu einzugeben.
Ich finde den fehler nicht!

2017.01.16 14:59:49 1: ERROR evaluating my $EVTPART0='refresh';my $EVENT='refresh';my $TYPE='dummy';my $SELF='rssi_read_from_device';my $NAME='RSSI_Chart';{  my @culs=devspec2array("TYPE=HMLAN");; push(@culs, devspec2array("TYPE=CUL"));; push(@culs, devspec2array("TYPE=CUL_RFR"));; push(@culs, devspec2array("TYPE=HMCCUDEV"));; push(@culs, devspec2array("TYPE=CUL_MAX"));;   my $HTTP="https";; # change it to "https", if you using https instead of http for FHEM my $nr_culs=scalar @culs;; my $colspan=$nr_culs+3;; my $dev ="";; my $cul_rssi="";; my $datum = strftime "%Y-%m-%d_%H:%M:%S", localtime;; my $rssi_chart="<table border='1'><tr bgcolor=yellow><td colspan=".$colspan."><div align='center'><font color='black'><b>RSSI Values of all devices from: ".$datum."</b></font></div></td></tr>";; my $nr=0;; my $cnt=0;; my $num=0;; my $line="";; my $header="<td>Enable</td>";; my $col="green";; my $alias="";; my $bestVal="";; my @all_values=();; my $best_value="";; my $ButHighLight=Value("RSSI_SertUpHighlight");; my $ButBestCol=Value("RSSI_SetUpBestCol");; my $ButLastActive=Value("RSSI_SetUpLastActive");; my $ButShowAverage=Value("RSSI_SetUpAverage");; my $ButShowOldValues=Value("RSSI_SetUpShowOldValues");; my @cul_avg=();; my @cul_num=();; my $all_best=0;; my $nr_allBest=0;; my $disabled="";; my $disabled_set="";; my $dev_disable="";; my $old_rssi_val="";; my $org_int="";; my $calc_diffs=ReadingsVal("RSSI_SetUpAverageSaveOldValues","state","");;  if ($ButBestCol eq 1) {$header=$header."<td>best</td>"};;  my @device=devspec2array("i:LASTInputDev=\\w.*");; @device = sort @device;;  foreach(@culs)  { $header=$header."<td><div align='center'><font color='lightblue'><a href=$HTTP://$FW_httpheader{Host}/fhem?detail=$_ target='_blank'>".$_."</a></font><div></td>";; $rssi_chart=$rssi_chart."<tr><td><div align='left'><font color='lightblue'>Device</font></div></td>".$header."</tr>";;     foreach(@device)  { $dev=$_;; $line="";; $alias=AttrVal($dev,"alias",$dev);; @all_values=();; $num=0;; $dev_disable=ReadingsVal("$dev","RSSI_disable","0");; foreach(@culs)  { if (InternalVal("$_","type","") eq "CUL_MAX") { $cul_rssi="RSSI" } else { $cul_rssi="$_"."_RSSI" } if ($EVENT eq "clear") { delete($defs{"$dev"}{"$cul_rssi"}) } my $all_int=InternalVal($dev,$cul_rssi,"");; if ($calc_diffs eq "1") { $old_rssi_val=ReadingsVal($dev,$cul_rssi."_old","");; if (($old_rssi_val)&&($all_int)) { $org_int=$all_int;; $all_int=$all_int-$old_rssi_val } else { $all_int="0" } } my $cul_time=InternalVal($dev,"$_"."_TIME","");; my $last_activity_since = int(time - time_str2num($cul_time));; my $best_value = "";; if (!$cul_avg[$num]) { $cul_avg[$num]=0;; } if (!$cul_num[$num]) { $cul_num[$num]=0;; }   if ($all_int)  $nr ++ } if (($all_int) && ($dev_disable eq "0")) { $cul_avg[$num]=$cul_avg[$num] + $all_int;; $cul_num[$num]=$cul_num[$num] + 1;; @all_values = (@all_values, $all_int);; my $ShowOldDiffs="";; if ($calc_diffs ne "1") { if ($all_int >= -75) { $col="lightgreen" } if ($all_int < -75)  { $col="yellow" } if ($all_int <= -80) { $col="#ff8533" } if ($all_int <= -85) { $col="red" } } else { if ($all_int >= 0)  $col="lightgreen"  } else { $col="red" } if ($ButShowOldValues eq "1") { $ShowOldDiffs="<br><font color='white' size='1'>$old_rssi_val →;;; $org_int</font>" } } my $row="<td><font color=$col> ".$all_int." </font>$ShowOldDiffs";; if ($ButLastActive eq 0) { $line=$line.$row."</td>";; } if ($ButLastActive eq 1) { $line=$line.$row."<div align='center'><font color='white' size='1'>(".$last_activity_since." s)</font></div></td>";; } } else { $line=$line."<td></td>";; } $num++;; } if ($nr > 0) { # find best RSSI values and mark with bold and underline if (@all_values)  { $best_value = $all_values[0];; for(@all_values)  { $best_value = $_ if($_ > $best_value);; } } if ($dev_disable eq 0) { if (!$best_value) {$best_value=0} if ($best_value >= -75) { $col="lightgreen" } if ($best_value < -75)  { $col="yellow" } if ($best_value <= -80) { $col="red" } if ($best_value <= -85) { $col="#CC6600" } $line =~ s/\./,/g;; if ($ButHighLight eq 1) { $nr_allBest++;; $all_best=$all_best+$best_value;; my $search_best_value=$best_value;; $best_value =~ s/\./,/g;; $line =~ s/ $search_best_value /<strong><div style='background-color: #006600'>$best_value<\/div><\/strong>/g;; } } if ($ButBestCol eq 1)  { $bestVal="<td><font color=$col>".$best_value."</font></td>";; } if ($dev_disable eq 1) { $disabled = "http://$FW_httpheader{Host}/fhem/images/default/ios-off.png";; $disabled_set = "0";; $col="grey";; if ($ButBestCol eq 1)  { $bestVal="<td></td>";; } } else $disabled = "http://$FW_httpheader{Host}/fhem/images/default/ios-on-green.png";; $disabled_set = "1";; } $cnt++;; $rssi_chart=$rssi_chart."<tr><td><div align='left'><b><a href=$HTTP://$FW_httpheader{Host}/fhem?detail=$dev target='_blank'><font color=$col>";; $rssi_chart=$rssi_chart.$cnt." ".$alias."</font></a></b></div></td><td>";; $rssi_chart=$rssi_chart."<a href=$HTTP://$FW_httpheader{Host}/fhem?cmd=setreading%20$dev%20RSSI_disable%20$disabled_set;;;;trigger%20RSSI_Chart%20refresh>";; $rssi_chart=$rssi_chart."<img src=$disabled width=75%></a></td>".$bestVal.$line."</tr>";; $nr=0;; } } if ($ButShowAverage eq 1) { my $txt_rssi="";; $rssi_chart="$rssi_chart"."<tr><td colspan='100%'></td></tr>";; if ($calc_diffs eq "1") { $txt_rssi="delta RSSI (diff to stored values)" } else { $txt_rssi="average RSSI" } $rssi_chart="$rssi_chart"."<tr bgcolor=MediumBlue><div align='center'><td><font color='white'><b>$txt_rssi</b></font></td><td></td>";; if ($ButBestCol eq 1)  { if (!$nr_allBest) {$nr_allBest=1} my $best_all="";; if ($calc_diffs eq "1") { $best_all= sprintf "%.2f", $all_best;; if ($best_all >= 0)  $col="lightgreen" } else { $col="red" } } else { $best_all= sprintf "%.2f", $all_best/$nr_allBest;; if ($best_all != 0) { if ($best_all >= -75) { $col="lightgreen" } if ($best_all < -75)  { $col="yellow" } if ($best_all <= -80) { $col="#ff8533" } if ($best_all <= -85) { $col="red" } } $rssi_chart=$rssi_chart."<td><font color=$col><b>".$best_all."</b></font></td>";; my $average="";; for(my $i = 0;; $i < @cul_avg;; $i++)  { if ($cul_avg[$i] != 0) { if ($calc_diffs eq "1") { $average = sprintf "%.2f", $cul_avg[$i];; if ($average >= 0) { $col="lightgreen" } else { $col="red" } } else { $average = sprintf "%.2f", $cul_avg[$i]/$cul_num[$i];; if ($average >= -75) { $col="lightgreen" } if ($average < -75)  { $col="yellow" } if ($average <= -80) { $col="#ff8533" } if ($average <= -85) { $col="red" } } } else { $average="";; } $rssi_chart="$rssi_chart"."<td><font color=$col><b>$average</b></font></td>";; Log 0,"RSSI Average:$culs[$i];;$average";; } if (!$nr_allBest) {$nr_allBest = 1} my $best_all= sprintf "%.2f", $all_best/$nr_allBest;; Log 0,"RSSI Average all best: $best_all";; $rssi_chart="$rssi_chart"."</tr>";; } $rssi_chart="$rssi_chart"."</table>";; if ($EVENT eq "clear") { Log 0,"Clearing all RSSI internal values";; } fhem ("set RSSI_Chart $rssi_chart");; }: Missing right curly or square bracket at (eval 1014159) line 1, at end of line
syntax error at (eval 1014159) line 1, at EOF

2017.01.16 14:59:49 3: rssi_read_from_device return value: Missing right curly or square bracket at (eval 1014159) line 1, at end of line
syntax error at (eval 1014159) line 1, at EOF


MFG Sig10680

fhem-challenge

Zitat von: sig10680 am 16 Januar 2017, 15:10:23
Hallo,
vielleicht kann mir jemand helfen.
Ich bekomme immer den Fehler im Log.
Ich denke es fehlt eine Klammer oder so.
Habe auch schon mehrfach versucht den Code neu einzugeben.
Ich finde den fehler nicht!

2017.01.16 14:59:49 1: ERROR evaluating my $EVTPART0='refresh';my $EVENT='refresh';my $TYPE='dummy';my $SELF='rssi_read_from_device';my $NAME='RSSI_Chart';{  my @culs=devspec2array("TYPE=HMLAN");; push(@culs, devspec2array("TYPE=CUL"));; push(@culs, devspec2array("TYPE=CUL_RFR"));; push(@culs, devspec2array("TYPE=HMCCUDEV"));; push(@culs, devspec2array("TYPE=CUL_MAX"));;   my $HTTP="https";; # change it to "https", if you using https instead of http for FHEM my $nr_culs=scalar @culs;; my $colspan=$nr_culs+3;; my $dev ="";; my $cul_rssi="";; my $datum = strftime "%Y-%m-%d_%H:%M:%S", localtime;; my $rssi_chart="<table border='1'><tr bgcolor=yellow><td colspan=".$colspan."><div align='center'><font color='black'><b>RSSI Values of all devices from: ".$datum."</b></font></div></td></tr>";; my $nr=0;; my $cnt=0;; my $num=0;; my $line="";; my $header="<td>Enable</td>";; my $col="green";; my $alias="";; my $bestVal="";; my @all_values=();; my $best_value="";; my $ButHighLight=Value("RSSI_SertUpHighlight");; my $ButBestCol=Value("RSSI_SetUpBestCol");; my $ButLastActive=Value("RSSI_SetUpLastActive");; my $ButShowAverage=Value("RSSI_SetUpAverage");; my $ButShowOldValues=Value("RSSI_SetUpShowOldValues");; my @cul_avg=();; my @cul_num=();; my $all_best=0;; my $nr_allBest=0;; my $disabled="";; my $disabled_set="";; my $dev_disable="";; my $old_rssi_val="";; my $org_int="";; my $calc_diffs=ReadingsVal("RSSI_SetUpAverageSaveOldValues","state","");;  if ($ButBestCol eq 1) {$header=$header."<td>best</td>"};;  my @device=devspec2array("i:LASTInputDev=\\w.*");; @device = sort @device;;  foreach(@culs)  { $header=$header."<td><div align='center'><font color='lightblue'><a href=$HTTP://$FW_httpheader{Host}/fhem?detail=$_ target='_blank'>".$_."</a></font><div></td>";; $rssi_chart=$rssi_chart."<tr><td><div align='left'><font color='lightblue'>Device</font></div></td>".$header."</tr>";;     foreach(@device)  { $dev=$_;; $line="";; $alias=AttrVal($dev,"alias",$dev);; @all_values=();; $num=0;; $dev_disable=ReadingsVal("$dev","RSSI_disable","0");; foreach(@culs)  { if (InternalVal("$_","type","") eq "CUL_MAX") { $cul_rssi="RSSI" } else { $cul_rssi="$_"."_RSSI" } if ($EVENT eq "clear") { delete($defs{"$dev"}{"$cul_rssi"}) } my $all_int=InternalVal($dev,$cul_rssi,"");; if ($calc_diffs eq "1") { $old_rssi_val=ReadingsVal($dev,$cul_rssi."_old","");; if (($old_rssi_val)&&($all_int)) { $org_int=$all_int;; $all_int=$all_int-$old_rssi_val } else { $all_int="0" } } my $cul_time=InternalVal($dev,"$_"."_TIME","");; my $last_activity_since = int(time - time_str2num($cul_time));; my $best_value = "";; if (!$cul_avg[$num]) { $cul_avg[$num]=0;; } if (!$cul_num[$num]) { $cul_num[$num]=0;; }   if ($all_int)  $nr ++ } if (($all_int) && ($dev_disable eq "0")) { $cul_avg[$num]=$cul_avg[$num] + $all_int;; $cul_num[$num]=$cul_num[$num] + 1;; @all_values = (@all_values, $all_int);; my $ShowOldDiffs="";; if ($calc_diffs ne "1") { if ($all_int >= -75) { $col="lightgreen" } if ($all_int < -75)  { $col="yellow" } if ($all_int <= -80) { $col="#ff8533" } if ($all_int <= -85) { $col="red" } } else { if ($all_int >= 0)  $col="lightgreen"  } else { $col="red" } if ($ButShowOldValues eq "1") { $ShowOldDiffs="<br><font color='white' size='1'>$old_rssi_val →;;; $org_int</font>" } } my $row="<td><font color=$col> ".$all_int." </font>$ShowOldDiffs";; if ($ButLastActive eq 0) { $line=$line.$row."</td>";; } if ($ButLastActive eq 1) { $line=$line.$row."<div align='center'><font color='white' size='1'>(".$last_activity_since." s)</font></div></td>";; } } else { $line=$line."<td></td>";; } $num++;; } if ($nr > 0) { # find best RSSI values and mark with bold and underline if (@all_values)  { $best_value = $all_values[0];; for(@all_values)  { $best_value = $_ if($_ > $best_value);; } } if ($dev_disable eq 0) { if (!$best_value) {$best_value=0} if ($best_value >= -75) { $col="lightgreen" } if ($best_value < -75)  { $col="yellow" } if ($best_value <= -80) { $col="red" } if ($best_value <= -85) { $col="#CC6600" } $line =~ s/\./,/g;; if ($ButHighLight eq 1) { $nr_allBest++;; $all_best=$all_best+$best_value;; my $search_best_value=$best_value;; $best_value =~ s/\./,/g;; $line =~ s/ $search_best_value /<strong><div style='background-color: #006600'>$best_value<\/div><\/strong>/g;; } } if ($ButBestCol eq 1)  { $bestVal="<td><font color=$col>".$best_value."</font></td>";; } if ($dev_disable eq 1) { $disabled = "http://$FW_httpheader{Host}/fhem/images/default/ios-off.png";; $disabled_set = "0";; $col="grey";; if ($ButBestCol eq 1)  { $bestVal="<td></td>";; } } else $disabled = "http://$FW_httpheader{Host}/fhem/images/default/ios-on-green.png";; $disabled_set = "1";; } $cnt++;; $rssi_chart=$rssi_chart."<tr><td><div align='left'><b><a href=$HTTP://$FW_httpheader{Host}/fhem?detail=$dev target='_blank'><font color=$col>";; $rssi_chart=$rssi_chart.$cnt." ".$alias."</font></a></b></div></td><td>";; $rssi_chart=$rssi_chart."<a href=$HTTP://$FW_httpheader{Host}/fhem?cmd=setreading%20$dev%20RSSI_disable%20$disabled_set;;;;trigger%20RSSI_Chart%20refresh>";; $rssi_chart=$rssi_chart."<img src=$disabled width=75%></a></td>".$bestVal.$line."</tr>";; $nr=0;; } } if ($ButShowAverage eq 1) { my $txt_rssi="";; $rssi_chart="$rssi_chart"."<tr><td colspan='100%'></td></tr>";; if ($calc_diffs eq "1") { $txt_rssi="delta RSSI (diff to stored values)" } else { $txt_rssi="average RSSI" } $rssi_chart="$rssi_chart"."<tr bgcolor=MediumBlue><div align='center'><td><font color='white'><b>$txt_rssi</b></font></td><td></td>";; if ($ButBestCol eq 1)  { if (!$nr_allBest) {$nr_allBest=1} my $best_all="";; if ($calc_diffs eq "1") { $best_all= sprintf "%.2f", $all_best;; if ($best_all >= 0)  $col="lightgreen" } else { $col="red" } } else { $best_all= sprintf "%.2f", $all_best/$nr_allBest;; if ($best_all != 0) { if ($best_all >= -75) { $col="lightgreen" } if ($best_all < -75)  { $col="yellow" } if ($best_all <= -80) { $col="#ff8533" } if ($best_all <= -85) { $col="red" } } $rssi_chart=$rssi_chart."<td><font color=$col><b>".$best_all."</b></font></td>";; my $average="";; for(my $i = 0;; $i < @cul_avg;; $i++)  { if ($cul_avg[$i] != 0) { if ($calc_diffs eq "1") { $average = sprintf "%.2f", $cul_avg[$i];; if ($average >= 0) { $col="lightgreen" } else { $col="red" } } else { $average = sprintf "%.2f", $cul_avg[$i]/$cul_num[$i];; if ($average >= -75) { $col="lightgreen" } if ($average < -75)  { $col="yellow" } if ($average <= -80) { $col="#ff8533" } if ($average <= -85) { $col="red" } } } else { $average="";; } $rssi_chart="$rssi_chart"."<td><font color=$col><b>$average</b></font></td>";; Log 0,"RSSI Average:$culs[$i];;$average";; } if (!$nr_allBest) {$nr_allBest = 1} my $best_all= sprintf "%.2f", $all_best/$nr_allBest;; Log 0,"RSSI Average all best: $best_all";; $rssi_chart="$rssi_chart"."</tr>";; } $rssi_chart="$rssi_chart"."</table>";; if ($EVENT eq "clear") { Log 0,"Clearing all RSSI internal values";; } fhem ("set RSSI_Chart $rssi_chart");; }: Missing right curly or square bracket at (eval 1014159) line 1, at end of line
syntax error at (eval 1014159) line 1, at EOF

2017.01.16 14:59:49 3: rssi_read_from_device return value: Missing right curly or square bracket at (eval 1014159) line 1, at end of line
syntax error at (eval 1014159) line 1, at EOF


MFG Sig10680

Hast Du den gesamten! Code in z.B. ein eigenes cfg-File geschrieben und z.B. via "include xxx.conf" im "fhem.cfg" eingebunden ?

Wann kommt der Fehler? Beim "klicken" auf "refresh" ?

Ich habe einmal "reverse" mein Codebeispiel aus dem Thread in eine eigene Include-Datei gespeichert und es läuft.

Vorschlag:

Speicher doch einmal den gesamten Code (komplett) in ein z.b. /opt/fhem/FHEM/fhem.rssi.cfg ... file (falls du linux hast).

und include den Code in Deiner fhem.cfg mit ...

include /opt/fhem/FHEM/fhem.rssi.cfg



Viele Grüße!

Andreas

sig10680

Ich habe den Code per Paste & Copy eingefügt!
Der fehler kommt beim klicken auf refresh.
War das falsch?


Zitat von: fhem-challenge am 16 Januar 2017, 15:40:45
Hast Du den gesamten Code in z.B. ein eigenes conf File geschrieben und z.B. via "include xxx.conf" im "fhem.cfg" eingebunden ?

Wann kommt der Fehler? Beim "klicken" auf "refresh" ?

Viele Grüße!

Andreas


mfg Sig10680

fhem-challenge

Zitat von: sig10680 am 16 Januar 2017, 15:45:07
Ich habe den Code per Paste & Copy eingefügt!
Der fehler kommt beim klicken auf refresh.
War das falsch?



mfg Sig10680

Nein, war richtig.

Vorschlag:

Speicher doch einmal den gesamten Code (komplett) in ein z.b. /opt/fhem/FHEM/fhem.rssi.cfg ... file (falls du linux hast).

und include den Code in Deiner fhem.cfg mit ...

include /opt/fhem/FHEM/fhem.rssi.cfg


sig10680

Zitat von: fhem-challenge am 16 Januar 2017, 15:48:57
Nein, war richtig.

Vorschlag:

Speicher doch einmal den gesamten Code (komplett) in ein z.b. /opt/fhem/FHEM/fhem.rssi.cfg ... file (falls du linux hast).

und include den Code in Deiner fhem.cfg mit ...

include /opt/fhem/FHEM/fhem.rssi.cfg

Ich teste und melde mich!

Danke vorab

sig10680

Zitat von: fhem-challenge am 16 Januar 2017, 15:48:57
Nein, war richtig.

Vorschlag:

Speicher doch einmal den gesamten Code (komplett) in ein z.b. /opt/fhem/FHEM/fhem.rssi.cfg ... file (falls du linux hast).

und include den Code in Deiner fhem.cfg mit ...

include /opt/fhem/FHEM/fhem.rssi.cfg

Danke für den Tip mit der include Datei hat es funktioniert. Jetzt muss ich nur noch feinheiten einstellen.

Kann ich auch als Typ den HMUARTLGW eintragen? und von Ihm den RSSI auszulesen?

Danke Sig10680

fhem-challenge

Zitat von: sig10680 am 16 Januar 2017, 19:57:42
Danke für den Tip mit der include Datei hat es funktioniert. Jetzt muss ich nur noch feinheiten einstellen.

Kann ich auch als Typ den HMUARTLGW eintragen? und von Ihm den RSSI auszulesen?

Danke Sig10680


Ja, das geht.

Schicke mir mal bitte einen Auszug aus einem Devices, welches vom HMUARTLGW empfangen wurde (also alle Reading und Internals). Auch bitte die internals und readings des UART Devices. Wenn ich weiss, wie die internals zum RSSI beim UART lauten, kann ich das im Code einfügen.

Viele Grüße!

Andreas

blueberry63

ZitatBei allen CULs/CUN./HMLAN etc. attr CUL addvaltrigger=1  ... setzen (Hinweis: Das kann auch durch die Funktion (siehe code) erreicht werden

Ich bin mir nicht sicher: muss dieses Attribut gesetzt werden und um welche "Funktion" geht es?

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

sig10680

Zitat von: fhem-challenge am 17 Januar 2017, 08:37:43

Ja, das geht.

Schicke mir mal bitte einen Auszug aus einem Devices, welches vom HMUARTLGW empfangen wurde (also alle Reading und Internals). Auch bitte die internals und readings des UART Devices. Wenn ich weiss, wie die internals zum RSSI beim UART lauten, kann ich das im Code einfügen.

Viele Grüße!

Andreas

Super das geht ja sehr schnell bei dir!

HMUARTLGW

Internals:
   AssignedPeerCnt 32
   CNT        245
   DEF        192.168.150.197
   DEVCNT     15
   DevState   99
   DevType    LGW
   DeviceName 192.168.150.197:2000
   FD         78
   LastOpen   1484558710.08688
   NAME       HMLGW
   NR         593
   PARTIAL
   RAWMSG     0500003DE3861044100F0000000A98C40C0000
   RSSI       -61
   STATE      opened
   TYPE       HMUARTLGW
   XmitOpen   1
   msgLoadCurrent 3
   msgLoadHistory 0/0/0/0/0/1/1/0/-1/0/0/0
   msgLoadHistoryAbs 3/3/3/3/3/3/2/1/1/2/2/2/2
   owner      XXXXXX
   owner_CCU  VCCU
   
Readings:
     2017-01-16 10:25:15   D-HMIdAssigned  XXXXXX
     2017-01-16 10:25:15   D-HMIdOriginal  FFFFFF
     2017-01-16 10:25:10   D-LANfirmware   1.1.5
     2017-01-16 10:25:15   D-firmware      1.4.1
     2017-01-16 10:25:10   D-serialNr      XXXXXXX
     2017-01-16 10:25:10   D-type          eQ3-HM-LGW
     2017-01-16 10:25:15   cond            ok
     2017-01-17 10:24:40   load            3
     2017-01-16 10:25:15   loadLvl         low
     2017-01-16 10:25:10   state           opened
   




CUL_HM

Internals:
   DEF        xxxxx
   HMLAN1_MSGCNT 686
   HMLAN1_RAWMSG E4C2265,0000,269A1321,FF,FFA9,B6A6414C22650A0650018CC8
   HMLAN1_RSSI -87
   HMLAN1_TIME 2017-01-17 10:57:16
   HMLGW_MSGCNT 700
   HMLGW_RAWMSG 0501002EB6A6414C22650A0650018CC8
   HMLGW_RSSI -46
   HMLGW_TIME 2017-01-17 10:57:16
   IODev      HMLGW
   LASTInputDev nanoCUL
   MSGCNT     2090
   NAME       HM_Sensor_EG_Haustuer
   NOTIFYDEV  global
   NR         589
   NTFY_ORDER 50-HM_Sensor_EG_Haustuer
   STATE      open
   TYPE       CUL_HM
   lastMsg    No:B6 - t:41 s:4C2265 d:0A0650 018CC8
   nanoCUL_MSGCNT 704
   nanoCUL_RAWMSG A0CB6A6414C22650A0650018CC8::-67:nanoCUL
   nanoCUL_RSSI -67
   nanoCUL_TIME 2017-01-17 10:57:16
   protLastRcv 2017-01-17 10:57:16
   protSnd    709 last_at:2017-01-17 10:57:16
   protState  CMDs_done
   rssi_at_HMLAN1 max:-74 min:-100 avg:-82.65 cnt:686 lst:-87
   rssi_at_HMLGW max:-40 min:-54 avg:-44.13 cnt:700 lst:-46
   rssi_at_nanoCUL min:-80.5 max:-47 cnt:704 avg:-57.5 lst:-67


Ich denke ich habe jetzt alles was du benötigst!

mfg Sig10680

fhem-challenge

Zitat von: blueberry63 am 17 Januar 2017, 10:31:49
Ich bin mir nicht sicher: muss dieses Attribut gesetzt werden und um welche "Funktion" geht es?

Gruß
Blueberry63

Das geht automatisch bei anklicken von "Enable RSSI reading in internals". Das muss nur einmal erfolgen, weil hier advaltrigger=1 an allen IODev's gesetzt wird und damit das "Speichern" der RSSI Werte erfolgt.

Viele Grüße!

Andreas

blueberry63

Alles klar. Danke für die schnelle Antwort. Dann warte ich mal auf die angepasste Version für HMUARTLGW :-)

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

fhem-challenge

Zitat von: blueberry63 am 17 Januar 2017, 11:12:40
Alles klar. Danke für die schnelle Antwort. Dann warte ich mal auf die angepasste Version für HMUARTLGW :-)

Gruß
Blueberry63

Ich habe den Code geändert, sodass nun das HMUARTLGW  auch gelesen wird.

Ist im Prinzip ganz einfach: Schlicht an den Stellen, an dem das array zusammengebastelt wird das entsprechende Attribut (internals), welches das IODev kennzeichnet, einfügen. Im Falle des HMUARTLGW   ist es wie folgt (rot) dar gestellt.


push(@culs, devspec2array("TYPE=HMLAN"));;\
push(@culs, devspec2array("TYPE=CUL_RFR"));;\
push(@culs, devspec2array("TYPE=HMCCUDEV"));;\
push(@culs, devspec2array("TYPE=CUL_MAX"));;\

push(@culs, devspec2array("TYPE=HMUARTLGW "));;\


Viele Grüße!

Andreas

sig10680

Zitat von: fhem-challenge am 17 Januar 2017, 11:40:29
Ich habe den Code geändert, sodass nun das HMUARTLGW  auch gelesen wird.

Ist im Prinzip ganz einfach: Schlicht an den Stellen, an dem das array zusammengebastelt wird das entsprechende Attribut (internals), welches das IODev kennzeichnet, einfügen. Im Falle des HMUARTLGW   ist es wie folgt (rot) dar gestellt.


push(@culs, devspec2array("TYPE=HMLAN"));;\
push(@culs, devspec2array("TYPE=CUL_RFR"));;\
push(@culs, devspec2array("TYPE=HMCCUDEV"));;\
push(@culs, devspec2array("TYPE=CUL_MAX"));;\

push(@culs, devspec2array("TYPE=HMUARTLGW "));;\


Viele Grüße!

Andreas

Super Danke bei mir läuft es einwandfrei!
Schneller Support!!! TOP!

Ein kleines Problem gibt es doch (siehe Bild)!

mfg Sig10680