Autor Thema: Zeilenumbrüche im Reading verschwinden  (Gelesen 1363 mal)

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2548
Zeilenumbrüche im Reading verschwinden
« am: 22 September 2018, 22:50:20 »
Hallo zusammen,

ich komme gerade an einem Punkt mit meimem "unittest" Modul nicht weiter.

Ich schreibe den Satus meiner tests in ein Reading und lese es dann mit einem shell script aus.

Im Reading steht dann z.B. Folgendes nachdem ich ein ReadingUpdate ausgeführt habe:

'ok 1 - Dispatch was called
ok 2 - message is for module TCM97001
'

Im Browser wird das Reading auch genau so angezeigt, solange ich keinen Refresh des Fensters mache.

Mein Problem ist, dass der Zeilenumbruch irgendwie entfernt wird. Aktualisiere ich mein Browserfenster steht folgendes im Reading und beim Abruf via Telnet kommt es auch genau so heraus.
'ok 1 - Dispatch was called ok 2 - message is for module TCM97001'

Ich habe schon verschiedenes probiert, aber der Zeilenumbruch wird irgendwie entfernt. Ich habe bislang nur nicht gefunden wo / wie ich es umgehen könnte.

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23112
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #1 am: 23 September 2018, 11:13:32 »
FHEMWEB konvertiert den Inhalt eines Readings vor der Anzeige nicht, und die Browser zeigen Newlines nicht an.

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2548
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #2 am: 24 September 2018, 15:48:38 »
Okay, das Problem ist weitgehend verstanden.

Beim Zugriff via Telnet von einer Shell sorgt der IFS Parameter dafür, dass Zeilenumbrüche entfernt werden.

Das konnte ich leicht anpassen.

Dass der Browser es nicht darstellt verstehe ich.
Wie würde ich denn vorgehen, wenn ich Zeilenumbrüche durch <br> ersetzen wollte?

Gesendet von meinem XT1650 mit Tapatalk

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26108
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #3 am: 24 September 2018, 15:50:37 »
RegEx, suchen und ersetzen \n durch <br> sollte gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2548
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #4 am: 24 September 2018, 15:54:11 »
RegEx, suchen und ersetzen \n durch <br> sollte gehen.
Danke für die Raketen schnelle Antwort.
Dass mit der Regel ist klar. Ich präzisieren meine Frage. :)

Wie konvertieren ich \n bei der Ausgabe via FhemWeb ersetzt aber nicht beim Zugriff via Telnet.

Das bekomme ich im Modul doch nicht mit wie ausgegeben wird, oder?

Grüße Sidey

Gesendet von meinem XT1650 mit Tapatalk

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26108
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #5 am: 24 September 2018, 16:08:09 »
Bin mir gerade unsicher, aber

if( $hash->{cl} and $hash->{cl}->{TYPE} eq 'FHEMWEB' ) {
...
...
} elsif( $hash->{cl} and $hash->{cl}->{TYPE} eq 'telnet' ) {
...
...
}

Kann aber auch totaler Blödsinn sein. Kann es leider gerade nicht testen.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2548
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #6 am: 24 September 2018, 16:48:34 »
Okay verstehe , aber FHEMweb greift doch direkt auf das Reading zu und ruft den Inhalt nicht durch eine von mir definierte Schnittstelle ab, oder?

Gesendet von meinem XT1650 mit Tapatalk

Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 26108
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #7 am: 24 September 2018, 16:59:39 »
 Stimmt hast Recht. Der Inhalt steht ja schon im Reading drin. Also Blödsinn. Ich würde behaupten wenn es drin steht kann dein Modul das ausliefern des Inhalts nicht ändern.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23112
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #8 am: 24 September 2018, 21:16:40 »
Ich habe FHEMWEB angepasst, damit Reading- und Internal Werte mit \n in einem <pre> Tag angezeigt werden.
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2548
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #9 am: 24 September 2018, 23:55:32 »
Danke, das ist echt  8)

 :) :) :) :) :)

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa

Offline abc2006

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 953
Antw:Zeilenumbrüche im Reading verschwinden
« Antwort #10 am: 19 November 2020, 11:59:49 »
Moin,
ich muss das hier nochmal aufwärmen:

Browser: Firefox und Chromium, am PC und auf dem Handy.
Inhalt der Variablen in der myUtils:
my $debug = "Debugging\ ";
$debug .= "\n Winter";
$debug .= "\nSolarPower: $solarpower > eigenverbrauch $eigenverbrauch + 100";
$debug .= "\n_soc > 95 && soc < 99.7; modbus: $modbus = \n\tsolarpower $solarpower\n\t + wrinput $wrinput\n\t + addpower $addpower";
$data{debug} = $debug;

sub feedindebug{
return $data{debug};
}

Das Device:
attr <device> userreading debug {feedindebug();}
das Reading:
debug

Debugging Winter SolarPower: 8697 > eigenverbrauch 1850 + 100 _soc <= 95 && solarpower > 8000; modbus: -451.5 = total_power -800 + over 348.5

ein list:
Internals:
   FUUID      5f061010-f33f-c595-f970-c82fbc33102ebff0
   NAME       Stromzaehler
   NR         24
   STATE      Mbus: -346; EigenV: 1911 W; WRinput -2581 W; Pges: -670 W
   TYPE       dummy
   READINGS:
     2020-11-19 11:25:42   1_SolarPower    8648
     2020-11-19 11:25:42   1_wrinput       -2581
     2020-11-19 11:25:42   2_soc           74.8
     2020-11-19 11:25:42   3_eigenverbrauch 1911
     2020-11-19 11:25:42   4_modbus        -346
     2020-11-19 11:25:42   6_Battpwr       7113
     2020-11-19 11:25:42   debug           Debugging
 Winter
SolarPower: 8648 > eigenverbrauch 1911 + 100
_soc <= 95 && solarpower > 8000; modbus: -346 = total_power -670 + over 324
     2020-11-19 11:25:42   total_power     -670
     2020-11-06 18:51:51   total_power_L1  -111.049573651576
     2020-11-06 18:51:51   total_power_L2  63
     2020-11-06 18:51:51   total_power_L3  -11
Attributes:
   room       Solar_PV
   stateFormat {sprintf("Mbus: %d; EigenV: %d W; WRinput %d W; Pges: %d W",
ReadingsVal($name,"4_modbus",0),
ReadingsVal($name,"3_eigenverbrauch",0),
ReadingsVal($name,"1_wrinput",0),
ReadingsVal($name,"total_power",0))}
   userReadings 4_modbus {feedInPower();},
2_soc {ReadingsNum("BMS","1_SOC_BMS_total",0);},
1_wrinput {ReadingsNum("fsp10k","AC_input_active_Power_total",0);},
1_SolarPower {ReadingsNum("fsp10k","Solar_input_power_1",0) + ReadingsNum("fsp10k","Solar_input_power_2",0);},
3_eigenverbrauch {(ReadingsNum($name,"1_wrinput",0)-ReadingsNum($name,"total_power",0))*-1;},
debug {feedindebug();},
6_Battpwr {ReadingsNum("BMS","1_Power_total",0);}

Der HTML-Quelltext:
<td><div class='dval' class='dval' informId='Stromzaehler-debug'><pre>Debugging
 Winter
SolarPower: 8701 &gt; eigenverbrauch 1445 + 100
_soc &lt;= 95 &amp;&amp; solarpower &gt; 8000; modbus: 35.5 = total_power -315 + over 350.5</pre></div></td>
<td><div informId='Stromzaehler-debug-ts'>2020-11-19 11:24:28</div></td>
</tr>

Zeilenumbrüche werden dargestellt im Zeitraum von F5 drücken bis zur nächsten aktualisierung des Readings.
<br>, <br /> usw funktionieren wegen dem pre alle nicht mehr.

Wo liegt mein Denkfehler?
Ist das ein Browser-Problem?
Danke und Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

 

decade-submarginal