Zeilenumbrüche im Reading verschwinden

Begonnen von Sidey, 22 September 2018, 22:50:20

Vorheriges Thema - Nächstes Thema

Sidey

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, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

FHEMWEB konvertiert den Inhalt eines Readings vor der Anzeige nicht, und die Browser zeigen Newlines nicht an.

Sidey

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, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Sidey

Zitat von: CoolTux am 24 September 2018, 15:50:37
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, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Sidey

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, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

CoolTux

 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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

rudolfkoenig

Ich habe FHEMWEB angepasst, damit Reading- und Internal Werte mit \n in einem <pre> Tag angezeigt werden.

Sidey

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

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

abc2006

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