Neueste Beiträge

#1
Heizungssteuerung/Raumklima / Aw: Mitsubishi Heavy oder Remk...
Letzter Beitrag von Treibhaus - 23 Mai 2024, 23:46:31
Hallo ch.eick ,

Nein, der Sommer kommt erst noch.  ;)
D.h. ich habe noch kein Gerät erworben.
Somit -> Sommerferien.

Gruß Jörg
#2
Anfängerfragen / Aw: Dummy Variable in SVG Log ...
Letzter Beitrag von frankyaye - 23 Mai 2024, 23:26:46
Hallo Beta User,
hier der .gplot
+# Created by FHEM/98_SVG.pm, 2024-05-21 20:15:29
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics
set y2tics
set grid
set ylabel "SummeSolar"
set y2label "Temperature"

#FileLog_shellyAlle 2:SolarSumme.*::
#FileLog_shellyAlle 2:SolarSumme.\x3a::

plot "<IN>" using 1:2 axes x1y2 title 'Line 1' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'lllll' ls l2 lw 1 with lines
und ja die ehrfachen Einträge kommen noch aus verschiedenen versuchen.  Einmal ein notify ohne filter:
define SummeNeu notify shellySolarCarport450Ost {\
my $SolarP1=ReadingsVal("shellySolarTerrasse","power","0");;\
my $SolarP2=ReadingsVal("shellySolarCarport450Ost","power_0","0");;\
my $SolarP3=ReadingsVal("shellySolarCarport600W ","power_0","0");;\
my $SolarP4=ReadingsVal("shellySolarCarport600W ","power_1","0");;\
my $SolarSumme=$SolarP1+$SolarP2+$SolarP3+$SolarP4;;\
Log 5, "Wert ist: $SolarSumme";;\
fhem("set SolarSumme $SolarSumme");;\
}
einmal in den userreadings eines filelog:
attr FileLog_shellySolarCarport450Ost userReadings my $SolarP1=ReadingsVal("shellySolarTerrasse","power","0");;;;\\
my $SolarP2=ReadingsVal("shellySolarCarport450Ost","power_0","0");;;;\\
my $SolarP3=ReadingsVal("shellySolarCarport600W ","power_0","0");;;;\\
my $SolarP4=ReadingsVal("shellySolarCarport600W ","power_1","0");;;;\\
my $SolarSumme=$SolarP1+$SolarP2+$SolarP3+$SolarP4;;;;\\
Log 5, "Wert ist: $SolarSumme";;;;\\
fhem("set SolarSumme $SolarSumme");;;;\
Aber so lange nichts im SVG steht dachte ich ich lasse es noch drin, und schaue später was am besten ist.
Eigentlich wäre ja bei jeder änderung des dummy, aber nicht öfter als alle 60 sec ganz gut für den Anfang.
Vielleicht auch zwei logs mit den min und den Maxwerten innerhalb von 5 Minuten. Aber eins nach dem andern. Noch kriege ich ja dieses "einfache" ding nicht hin. Dabei programmiere ich Beruflich, das ist aber komplett anders in der Beckhoff sps.
#3
MQTT / Aw: Shelly 1 mini Gen3 mit MQT...
Letzter Beitrag von Guzzi-Charlie - 23 Mai 2024, 23:18:39
Hallo,
ich habe noch ein kleines Problem welches ich einfach nicht gebacken bekomme.

Ich habe das setlist nun auf "Taster:noArg ML20-GB/command/switch:0 toggle" abgeändert (webCmd="Taster"). Das funktioniert ebenfalls einwandfrei.

Ich möchte aber als Arg das "iconSwitch" verwenden, also: setList="Taster:iconSwitch,on,li_wht_off,off,li_wht_on ML20-GB/command/switch:0 toggle"
Das funktioniert aber nicht. Das Befehlswort "Taster" verschwindet zwar, aber das Icon erscheint nicht. Damit kann dann natürlich kein Befehl abgesetzt werden.

Was mache ich da falsch?
#4
MQTT / Aw: Bestway LayZSpar Wirlpool
Letzter Beitrag von Tueftler1983 - 23 Mai 2024, 23:01:04
Hey also mit reduziertem filter funktioniert das Template.
Nur die Zuweisung in den Raum funktioniert nicht, es wird dann ein Raum angelegt mit dem Namen : MQTT2_Devicename

Eigentlich soll es ja in den Raum (MQTT2_DEVICE)

Und das "°" Zeichen wurde nicht dargestellt sondern ein anderes undefiniertes Zeichen deshalb habe ich es in den Text "Grad"


####################################
# provided as mqtt2_layzspa.template by Tueftler1983
#Use this for the WLAN Module RelaxAndSpa for Bestway Lay Z Spar Wirlpools. The Wlan module ist Selled and #Supportet from Michael Krenner https://www.mk-innovations.de/smartandrelax-modul/
name:LayZSpa
filter:TYPE=MQTT2_DEVICE
par:BASE_TOPIC;base topic set in SmarAndRelax MQTT Konfiguration;{ AttrVal('DEVICE','readingList','') =~ m,([^:]+)/Status:, ? $1 : undef }
desc:Use this for the WiFi Module RelaxAndSpa for Bestway Lay Z Spar Wirlpools. The WiFi module ist selled and supportet by Michael Krenner https://www.mk-innovations.de/smartandrelax-modul/. Note: in case Client-ID and Basic-Topic include SPACE letters, you will have to change that fist in the settings of the WiFi module!
defmod DEVICE MQTT2_DEVICE Lay_Z_Spa_Module
attr DEVICE devStateIcon 2.on:water-heat@orange:heater+off\
2.off:water-heat@red:heater+on\
3.off:water-heat@red:heater+on\
3.on:water-heat@green:heater+off\
1.on:sani_domestic_waterworks@green:pump+off\
1.off:sani_domestic_waterworks@red:pump+on\
4.off:vent_ventilation_level_0@red:air+on\
4.on:vent_ventilation_level_3@green:air+off
attr DEVICE jsonMap TGT:desired-temp TMP:temperature FLT:pump AIR:air RED:heater GRN:hot UNT:unit AMB:ambiant-temp
attr DEVICE readingList BASE_TOPIC/button:.* button\
  BASE_TOPIC/message:.* { $EVENT =~ s/"(FLT|AIR|RED|GRN)":1/"$1":"on"/g; $EVENT =~ s/"(FLT|AIR|RED|GRN)":0/"$1":"off"/g; $EVENT =~ s/"(UNT)":1/"$1":"Celsius"/g; $EVENT =~ s/"(UNT)":0/"$1":"Fahrenheit"/g; json2nameValue($EVENT,'',$JSONMAP) }\
  BASE_TOPIC/times:.* { json2nameValue($EVENT, 'times_', $JSONMAP) }\
  BASE_TOPIC/other:.* { json2nameValue($EVENT, 'other_', $JSONMAP) }\
  BASE_TOPIC/Status:.* { $EVENT eq 'Alive' ? {LWT=>'online'} : {LWT=>'offline'} }\
  BASE_TOPIC/MAC_Address:.* MAC_Address\
  BASE_TOPIC/MQTT_Connect_Count:.* MQTT_Connect_Count\
  BASE_TOPIC/reboot_time:.* reboot_time\
  BASE_TOPIC/reboot_reason:.* reboot_reason
attr DEVICE room MQTT2_DEVICE
attr DEVICE setList pump:on,off { my $on = $EVTPART1 eq 'on'?1:0; qq(BASE_TOPIC/command { "CMD":4, "VALUE":$on, "XTIME":0, "INTERVAL":0 }) }\
  desired-temp:slider,20,1,40 BASE_TOPIC/command {CMD:0,VALUE:$EVTPART1,XTIME:0,INTERVAL:0}\
  air:on,off { my $on = $EVTPART1 eq 'on'?1:0; qq(BASE_TOPIC/command { "CMD":2, "VALUE":$on, "XTIME":0, "INTERVAL":0 }) }\
  unit:Celsius,Fahrenheit { my $Celsius = $EVTPART1 eq 'Celsius'?1:0; qq(BASE_TOPIC/command  { "CMD":1, "VALUE":$Celsius, "XTIME":0, "INTERVAL":0 }) }\
  heater:on,off { my $on = $EVTPART1 eq 'on'?1:0; qq(BASE_TOPIC/command { "CMD":3, "VALUE":$on, "XTIME":0, "INTERVAL":0 }) }\
  reset_chlorid BASE_TOPIC/command {CMD:9,VALUE:,XTIME:0,INTERVAL:0}\
  reset_filter BASE_TOPIC/command {CMD:10,VALUE:,XTIME:0,INTERVAL:0}
attr DEVICE stateFormat 1:pump\
2:heater\
3:hot\
4:air\
temperature Grad C\
<br>\
Letzter Filter Wechsel last_filter_change Tage\
<br>\
Letzte Chlorung last_add_chlorid Tage
attr DEVICE userReadings last_add_chlorid:times_CLTIME.* {return int((time()-ReadingsVal($name, 'times_CLTIME', 0))/DAYSECONDS);}, last_filter_change:times_FTIME.* {return int((time()-ReadingsVal($name, 'times_FTIME', 0))/DAYSECONDS);}
attr DEVICE webCmd desired-temp:reset_filter:reset_chlorid

An dieser Stelle nochmal einen herzlichen Dank für die Hilfe.
Freue mich wenn das Template aufgenommen wird.

LG Holger
#5
Solaranlagen / Aw: Photovoltaik Eigenverbrauc...
Letzter Beitrag von trupf - 23 Mai 2024, 22:30:08
Zitat von: ch.eick am 23 Mai 2024, 13:05:47Ist es denn nur die sub FUNC_batt(), oder war da noch mehr? Ich hatte da ja auch noch im uiTable etwas von Dir übernommen.

Edit: Mit Deiner Änderung ist jetzt jedoch die Überlagerung mit dem Hintergrund weg und die Batterie wird nur als Farbverlauf bis zum Ende angezeigt, obwohl sie noch nicht voll ist.
  Das könnte an der berechneten Startposition liegen, die Du wohl auf 0px gesetzt hast.

Du musst noch etwas am Code ändern, deswegen habe ich ja den kompletten uiTable gepostet. Bei jeder einzelnen Box muss "background:linear-gradient( to right, red 0 px,yellow 30px,green 50px);" durch "background:transparent" ersetzt werden, dadurch wird nur der leere Rahmen gezeichnet. Stattdessen wird durch die sub FUNK_batt() dann der Teil des Balkens gezeichnet, der dem Ladestand entspricht - und nichts mehr überdeckt. Natürlich muss die Startposition auch auf 0px sitzen, damit das funktioniert.

<div style='border-width:2px;border-style:solid;border-color:gray;position:relative;width:90px;height:20px;padding:0px 0px;display:inline-block;background:transparent;'>".STY(" ",FUNC_batt([$SELF:SpeicherMaxSOC_Actual])).STY("geplant","font-size:12px;position:absolute;top:3px;left:25px")."</div><br>".widget([$SELF:SpeicherMaxSOC_Actual],"selectnumbers,5,1,100,0,lin")."%"
#6
MQTT / [gelöst] Aw: Attribut 'jsonMap...
Letzter Beitrag von fhem_olsi - 23 Mai 2024, 22:24:43
ZitatWie hast das gemacht die zwei \ (newline) da hinzubekommen ? Über den "Raw-Editor" ?
Ok, alles klar; ich hatte von Hand im Editor des WebEnds die BackSlashes eingegeben. Jetzt habe ich sie mal weggemacht - und jetzt stimmt das Bild.

Das hake ich jetzt (für mich) unter dem Kapitel "zickig" ab; FHEm ist eben extrem gewöhnungsbedürftig hinsichtlich Leerzeichen, Kommata, Semikola, Slashes, und, und und.
Da könnte man dem unbedarften Benutzer etwas entgegengekommen: Trim (s.o.) einsetzen, "\\" -> "\" usw.
Ein hartes Brot ist da zu kauen...

Wolfgang
#7
MQTT / Aw: MQTT readingList Json zwei...
Letzter Beitrag von Beta-User - 23 Mai 2024, 21:35:07
Zitat von: appi am 23 Mai 2024, 19:12:34nur für's Verständnis

  • Ich betreibe Fhem in meinem Wohnmobil auf einem Teltonika RUTX11
  • auf dem Router RUTX11 läuft auch der MQTT Broker
  • für die Aussen-Klima Werte nutze ich einen BLE Puk auch von Teltonika dessen Daten vom RUTX11 empfangen werden und via MQTT Brocker an Fhem weitergeben werden
  • GPS Daten kommen auch vom RUTX11 und per MQTT an Fhem
  • etc, etc
...ohne Doku-Verweise kann zumindest ich mir nichts darunter vorstellen, und ich bleibe auch dabei, dass der JSON eigentlich "kaputt" ist, der so erzeugt wird...

Macht aber nichts :) .
Zitat von: appi am 23 Mai 2024, 19:04:57top,hätte ich nie hingekriegt, besten Dank
Danke zurück für die Rückmeldung, aber sag niemals "nie"...

Die Doppelung bzw. die Belassung des "data"-JSON dürfte von der Doppelung in der readingList kommen, da sollte eine Zeile genügen ;) . Wieder als Trockenübung mit generischem Schleifenversuch:
readingList Womo/Eye_1:.* { my $ret=json2nameValue($EVENT); for ( my $okey keys %{$ret} {if ($okey =~ m{_data}) { my $ret2=json2nameValue($ret->{$okey},"${okey}_data_"); delete $ret->{$okey}; for ( keys %{$ret2} ) { $ret->{$_}=$ret2->{$_};}}} return $ret }
#8
MQTT / Aw: Dummy MQTT-Device für Smar...
Letzter Beitrag von bismosa - 23 Mai 2024, 21:19:11
Hallo!

Danke für die Antwort!
Ja, du hast das genau richtig verstanden. Ich muss periodisch den aktuellen Status publishen und es soll auch noch schaltbar sein (damit das Portal festlegen kann, wann das Gerät eingeschaltet werden kann)
Durch ein "dummy-Wert" für den Energieverbrauch, kann ich den tatsächlichen Verbrauch dann auch gut übermitteln und in die Statistiken des Portals aufnehmen.

Zitat von: Beta-User am 23 Mai 2024, 14:25:24Den Zusammenhang zwischen DOIF und MQTT_GENERIC_BRIDGE (MGB) verstehe ich nicht so ganz...
Wenn ich die MQTT_GENERIC_BRIDGE richtig verstanden habe, dann kann ich jedes Device um MQTT erweitern. Mit einem doif kann man sehr gut Timer erstellen, die dann das Senden des Status übernehmen.
Da ich mit dem Modul noch keine Erfahrungen habe, war ich mir nicht sicher, ob dies für mein Anwendungsfall das richtige ist. Wäre dann halt (außer die MGB) nur ein Device, das sich um "alles" kümmert.

Zitat von: Beta-User am 23 Mai 2024, 14:25:24oder (per periodicCmd) auch direkt in einem MQTT2_DEVICE
Das ist natürlich auch spannend. In meinem Fall würde das ja vermutlich ausreichen...allerdings könnte die Minute schon knapp werden. Dann sollte das auch alles mit einem MQTT2_Device machbar sein.

Ich werde das mal testen...

Gruß
Bismosa
#9
Sonstiges / Aw: 49_SSCam: Fragen, Hinweise...
Letzter Beitrag von Muffin4711 - 23 Mai 2024, 20:58:07
Zitat von: DS_Starter am 23 Mai 2024, 20:06:19Hallo Jörg,

setze die das Attr showStmInfoFull=1 ->

zusaätzliche Streaminformationen wie LiveStreamUrl, StmKeyUnicst, StmKeymjpegHttp werden ausgegeben

Grüße,
Heiko

Danke Heiko
#10
MQTT / Aw: Attribut 'jsonMap' zeigt m...
Letzter Beitrag von TomLee - 23 Mai 2024, 20:13:02
attr SML_Reader jsonMap LK13BE_Power_L1_curr:pwr1\\
LK13BE_Power_L2_curr:pwr2\\
LK13BE_Power_L3_curr:pwr3

Wie hast das gemacht die zwei \ (newline) da hinzubekommen ? Über den "Raw-Editor" ?