FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MandelHL am 06 Juni 2021, 13:31:07

Titel: Windrichtung als Text darstellen
Beitrag von: MandelHL am 06 Juni 2021, 13:31:07
Hallo.

Ich habe hierzu schon einen Beitrag gefunden. Allerdings ist der aus 2016, auf den sich nicht mehr antworten lässt.

Ich wollte bei meiner Wetterstation HM-WDS100-C6-O-2 die Windrichtung in Grad als Text anzeigen lassen.

Dabei habe ich die 99_myUtils.pm wie in dem Thread ergänzt:
sub windDirName($) {
  my ($dir) = @_;
  my @winddir_name=("N","NNO","NO","ONO","O","OSO","SO","SSO","S","SSW","SW","WSW","W","WNW","NW","NNW");
  return $winddir_name[int((($dir + 11.25) % 360) / 22.5)];
}


Wenn ich {windDirName(200)} eingebe, wird auch ,,SSW" ausgeworfen.

Trotzdem habe ich in der Anzeige aber im ,,N" stehen, egal aus welcher Richtung der Wind kommt.

Ich habe ein List erzeugt, das hoffentlich hilft:
Internals:
   DEF        6808C9
   FUUID      60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
   HMLANGW_MSGCNT 20
   HMLANGW_RAWMSG 050000381486706808C900000000B648000000003434CB
   HMLANGW_RSSI -56
   HMLANGW_TIME 2021-06-06 13:28:24
   IODev      HMLANGW
   LASTInputDev HMLANGW
   MSGCNT     20
   NAME       Wetterstation
   NOTIFYDEV  global
   NR         88
   STATE      Temperatur: 18.2 °C, Feuchtigkeit: 72 %, Helligkeit: 203, Regen: 0 mm/qm, Wind: 0 km/h,  Richtung: N, Richtung in Grad: 260
   TYPE       CUL_HM
   chanNo     01
   lastMsg    No:14 - t:70 s:6808C9 d:000000 00B648000000003434CB
   protCmdPend 3 CMDs_pending
   protLastRcv 2021-06-06 13:28:24
   protRcv    20 last_at:2021-06-06 13:28:24
   protState  CMDs_pending
   rssi_at_HMLANGW cnt:20 min:-57 max:-55 avg:-55.99 lst:-56
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x32713a8)
   CL:
     Authenticated 0
     BUF       
     FD         21
     FW_ID      273
     LASTACCESS 1622978936
     NAME       WEB_192.168.178.169_49870
     NR         274
     PEER       192.168.178.169
     PORT       49870
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2021-06-06 13:28:45   state           Connected
   READINGS:
     2021-06-06 12:34:49   .D-devInfo      3F0100
     2021-06-06 12:34:49   .D-stc          70
     2021-06-06 12:37:37   .associatedWith Wetterstation,Wetterstation
     2021-06-06 13:28:24   .protLastRcv    20210606132824
     2021-06-06 12:34:49   D-firmware      1.6
     2021-06-06 12:34:49   D-serialNr      PEQ0001456
     2021-06-06 12:37:32   IODev           HMLANGW
     2021-06-06 13:28:24   battery         ok
     2021-06-06 13:28:24   brightness      203
     2021-06-06 12:39:55   cfgState        updating
     2021-06-06 12:39:55   commState       CMDs_pending
     2021-06-06 13:28:24   humidity        72
     2021-06-06 13:28:24   isRaining       0
     2021-06-02 07:35:17   peerList        13D5A503
     2021-06-06 12:36:20   powerOn         2021-06-06 12:36:20
     2021-06-06 13:28:24   rain            0
     2021-06-06 12:36:20   recentStateType info
     2021-06-06 13:28:24   state           T: 18.2 H: 72 W: 0 R: 0 IR: 0 WD: 260 WDR: 0 S: 52 B: 203
     2021-06-06 13:28:24   sunshine        52
     2021-06-06 13:28:24   temperature     18.2
     2021-06-06 12:36:20   unknown         06000030
     2021-06-06 13:28:24   windDirRange    0
     2021-06-06 13:28:24   windDirection   260
     2021-06-06 13:28:24   windSpeed       0
     2021-06-06 13:28:24   winddirText     N
   cmdStack:
     ++A00125788A6808C900040000000000
     ##A00125788A6808C90103
     ##A00125788A6808C901040000000001
   helper:
     HM_CMDNR   20
     PONtest    1
     getCfgList all
     getCfgListNo ,1,4
     mId        00AE
     peerFriend peerAct,peerVirt
     peerOpt    1p:THSensor,4:THSensor,p:THSensor
     regLst     0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1622976967.14959
       TmplTs     1622976967.14959
       cmdKey     1:1:0::Wetterstation:00AE:01:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- -addr2:data2-...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         tplDel     -tplDel-
         trgEventL  -peer- -condition-
         trgEventS  -peer- -condition-
         trgPressL  [(-peer-|{all})]
         trgPressS  [(-peer-|{all})]
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   


Hat jemand eine Idee, woran das liegt?

Danke und schönen Sonntag,
Mandel
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: Otto123 am 06 Juni 2021, 13:45:25
Hallo Mandel,

fehlt an deinem list der Schluss? Ich sehe nicht wo Deine sub aufgerufen wird und es zum Reading kommen könnte
Gruß Otto
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: tobi925 am 06 Juni 2021, 13:57:10
Hallo Mandel,
das geht einfach als UserReading.


attr Wetterstation userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))}, \
windDirectionIcon:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0),3)}


Gruß Tobi
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MadMax-FHEM am 06 Juni 2021, 14:54:17
Ich sehe da keinen Aufruf von deiner Sub 'windDirName'...

Also wo soll dann der richtige Name herkommen?

EDIT: ups, jetzt dachte ich das userReadings wäre von MandelHL ;) Aber von ihm fehlt ja noch die Antwort... ;)

Gruß, Joachim
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 06 Juni 2021, 15:02:37
Tschuldige, ja, ich hatte nicht alles angehängt:
Internals:
   DEF        6808C9
   FUUID      60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
   HMLANGW_MSGCNT 54
   HMLANGW_RAWMSG 050000393686706808C900000000C541000080120289D5
   HMLANGW_RSSI -57
   HMLANGW_TIME 2021-06-06 14:54:12
   IODev      HMLANGW
   LASTInputDev HMLANGW
   MSGCNT     54
   NAME       Wetterstation
   NOTIFYDEV  global
   NR         88
   STATE      Temperatur: 19.7 °C, Feuchtigkeit: 65 %, Helligkeit: 213, Regen: 0 mm/qm, Wind: 1.8 km/h,  Richtung: N, Richtung in Grad: 10
   TYPE       CUL_HM
   chanNo     01
   lastMsg    No:36 - t:70 s:6808C9 d:000000 00C541000080120289D5
   protCmdPend 3 CMDs_pending
   protLastRcv 2021-06-06 14:54:12
   protRcv    54 last_at:2021-06-06 14:54:12
   protState  CMDs_pending
   rssi_at_HMLANGW cnt:54 min:-57 max:-55 avg:-56.57 lst:-57
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x32713a8)
   CL:
     Authenticated 0
     BUF       
     FD         21
     FW_ID      375
     LASTACCESS 1622984191
     NAME       WEB_192.168.178.170_53618
     NR         376
     PEER       192.168.178.170
     PORT       53618
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2021-06-06 14:56:26   state           Connected
   READINGS:
     2021-06-06 12:34:49   .D-devInfo      3F0100
     2021-06-06 12:34:49   .D-stc          70
     2021-06-06 12:37:37   .associatedWith Wetterstation,Wetterstation
     2021-06-06 14:54:12   .protLastRcv    20210606145412
     2021-06-06 12:34:49   D-firmware      1.6
     2021-06-06 12:34:49   D-serialNr      PEQ0001456
     2021-06-06 12:37:32   IODev           HMLANGW
     2021-06-06 14:54:12   battery         ok
     2021-06-06 14:54:12   brightness      213
     2021-06-06 12:39:55   cfgState        updating
     2021-06-06 12:39:55   commState       CMDs_pending
     2021-06-06 14:54:12   humidity        65
     2021-06-06 14:54:12   isRaining       0
     2021-06-02 07:35:17   peerList        13D5A503
     2021-06-06 12:36:20   powerOn         2021-06-06 12:36:20
     2021-06-06 14:54:12   rain            0
     2021-06-06 12:36:20   recentStateType info
     2021-06-06 14:54:12   state           T: 19.7 H: 65 W: 1.8 R: 0 IR: 0 WD: 10 WDR: 45 S: 137 B: 213
     2021-06-06 14:54:12   sunshine        137
     2021-06-06 14:54:12   temperature     19.7
     2021-06-06 12:36:20   unknown         06000030
     2021-06-06 14:54:12   windDirRange    45
     2021-06-06 14:54:12   windDirection   10
     2021-06-06 14:54:12   windSpeed       1.8
     2021-06-06 14:54:12   winddirText     N
   cmdStack:
     ++A00125788A6808C900040000000000
     ##A00125788A6808C90103
     ##A00125788A6808C901040000000001
   helper:
     HM_CMDNR   54
     PONtest    1
     getCfgList all
     getCfgListNo ,1,4
     mId        00AE
     peerFriend peerAct,peerVirt
     peerOpt    1p:THSensor,4:THSensor,p:THSensor
     regLst     0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1622976967.14959
       TmplTs     1622976967.14959
       cmdKey     1:1:0::Wetterstation:00AE:01:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- -addr2:data2-...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         tplDel     -tplDel-
         trgEventL  -peer- -condition-
         trgEventS  -peer- -condition-
         trgPressL  [(-peer-|{all})]
         trgPressS  [(-peer-|{all})]
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt    Charlotte_Heizungsventil_WindowRec,Charlotte_Heizungsventil_remote,Garten_links,Garten_rechts,Haustuerbeleuchtung,Hochbeet_links,Hochbeet_rechts,Markise,SchalterBeleuchtungVorgarten,Schuppen_Garten
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        0
       det        0
       raw        1
       tpl        0
     io:
       flgs       0
       newChn     +6808C9,00,00,00
       nextSend   1622984052.80496
       prefIO     
       rxt        0
       vccu       
       p:
         6808C9
         00
         00
         00
     mRssi:
       mNo        36
       io:
         HMLANGW:
           -51
           -51
     peerIDsH:
     prt:
       bErr       0
       sProc      2
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_HMLANGW:
         avg        -56.5740740740741
         cnt        54
         lst        -57
         max        -55
         min        -57
     tmpl:
Attributes:
   .mId       00AE
   IODev      HMLANGW
   alias      Wetterstation
   appOptions { "template": "thermometer"}
   autoReadReg 4_reqStatus
   expert     rawReg
   firmware   1.6
   group      Wetterstation
   model      HM-WDS100-C6-O-2
   room       Wetter
   serialNr   PEQ0001456
   stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %, Helligkeit: brightness, Regen: rain mm/qm, Wind: windSpeed km/h,  Richtung: winddirText, Richtung in Grad: windDirection
   subType    THSensor
   userReadings winddirText {windDirName(ReadingsVal("Wetterstation", "windDir",""))}


@Tobi925: Dein Tipp hat leider nicht geholfen. Es bleibt das ,,N", obwohl wir jetzt mit 35 Grad ,,NO" haben.

@MadMax-FHEM: Dass ich die Sub ,,windDirName" aufrufen muss, habe ich nirgendwo gelesen.
Wo und wie muss ich das denn machen?

Danke,
Mandel
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MadMax-FHEM am 06 Juni 2021, 15:25:52
Zitat von: MandelHL am 06 Juni 2021, 15:02:37

@MadMax-FHEM: Dass ich die Sub ,,windDirName" aufrufen muss, habe ich nirgendwo gelesen.
Wo und wie muss ich das denn machen?

Danke,
Mandel

EDIT: wenn du auch einen Link zu deiner "Anleitung" gepostet hättest, könnte man dort auch nachgelesen haben ;)

Woher denkst du denn dann, dass die Windrichtung als Text dann herkommt/herkommen soll ;)

"Irgendwas" muss die Sub ja aufrufen.
Und zwar jedes mal, wenn sich die Windrichtung ändert...
...ergo: besser GENAU DAS als Trigger für das userReadings nehmen.

Im userReadings kannst du auch $name nutzen, dann kannst du das Device auch mal umbenennen und das userReadings geht immer noch :)

Gruß, Joachim
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: jkriegl am 06 Juni 2021, 15:45:18
Die "Anleitung" stammt vermutlich von hier
https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802 (https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802)
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MadMax-FHEM am 06 Juni 2021, 15:47:10
Zitat von: jkriegl am 06 Juni 2021, 15:45:18
Die "Anleitung" stammt vermutlich von hier
https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802 (https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802)

Wenn dem so ist: GENAU DA steht das mit dem userReadings ;)
Allerdings (auch) OHNE Trigger...

Gruß, Joachim
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: frank am 06 Juni 2021, 15:48:38
ausserdem wird das reading "windDir" im userreading übergeben, das es überhaupt nicht gibt.
da muss "windDirection" hin.
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: tobi925 am 06 Juni 2021, 16:26:55
Hallo Mandel,
hast du die beiden Codezeilen aus Antwort 2 genau so ausgeführt?
Was kam dann nach einer Änderung des Readings windDirection raus?

Das ganze myUtils-Selbstbau-Gedöns ist doch schon lange nicht mehr notwendig. Diese Umrechnungen gibt es doch dank loredo schon vortrefflich in der UConv.pm

Gruß Tobi
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 06 Juni 2021, 21:43:07
Oha, nun wird's noch schwieriger.

Internals:
   DEF        6808C9
   FUUID      60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
   HMLANGW_MSGCNT 1
   HMLANGW_RAWMSG 05000037D186706808C900000000B45000004000371230
   HMLANGW_RSSI -55
   HMLANGW_TIME 2021-06-06 21:26:25
   IODev      HMLANGW
   LASTInputDev HMLANGW
   MSGCNT     1
   NAME       Wetterstation
   NOTIFYDEV  global
   NR         88
   STATE      Temperatur: 18 °C, Feuchtigkeit: 80 %, Helligkeit: 48, Regen: 0 mm/qm, Wind: 0 km/h,  Richtung: N, Richtung in Grad: 275
   TYPE       CUL_HM
   chanNo     01
   lastMsg    No:D1 - t:70 s:6808C9 d:000000 00B45000004000371230
   protCmdPend 3 CMDs_pending
   protLastRcv 2021-06-06 21:26:25
   protRcv    1 last_at:2021-06-06 21:26:25
   protState  CMDs_pending
   rssi_at_HMLANGW cnt:1 min:-55 max:-55 avg:-55 lst:-55
   .attraggr:
   .attrminint:
   CL:
     Authenticated 0
     BUF       
     FD         19
     FW_ID      122
     LASTACCESS 1623007728
     NAME       WEB_192.168.178.170_53710
     NR         123
     PEER       192.168.178.170
     PORT       53710
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     .attraggr:
     .attrminint:
     READINGS:
       2021-06-06 21:28:30   state           Connected
   READINGS:
     2021-06-06 12:34:49   .D-devInfo      3F0100
     2021-06-06 12:34:49   .D-stc          70
     2021-06-06 21:25:44   .associatedWith Wetterstation,Wetterstation
     2021-06-06 21:26:25   .protLastRcv    20210606212625
     2021-06-06 12:34:49   D-firmware      1.6
     2021-06-06 12:34:49   D-serialNr      PEQ0001456
     2021-06-06 21:25:38   IODev           HMLANGW
     2021-06-06 21:26:25   battery         ok
     2021-06-06 21:26:25   brightness      48
     2021-06-06 21:26:25   cfgState        updating
     2021-06-06 21:26:25   commState       CMDs_pending
     2021-06-06 21:26:25   humidity        80
     2021-06-06 21:26:25   isRaining       0
     2021-06-02 07:35:17   peerList        13D5A503
     2021-06-06 12:36:20   powerOn         2021-06-06 12:36:20
     2021-06-06 21:26:25   rain            0
     2021-06-06 12:36:20   recentStateType info
     2021-06-06 21:26:25   state           T: 18 H: 80 W: 0 R: 0 IR: 0 WD: 275 WDR: 22.5 S: 18 B: 48
     2021-06-06 21:26:25   sunshine        18
     2021-06-06 21:26:25   temperature     18
     2021-06-06 12:36:20   unknown         06000030
     2021-06-06 21:26:25   windDirRange    22.5
     2021-06-06 21:26:25   windDirection   275
     2021-06-06 21:24:19   windDirectionIcon Error evaluating Wetterstation userReading windDirectionIcon: Undefined subroutine &UConv::direction2compasspoint called at (eval 264) line 1.

     2021-06-06 21:24:19   windDirectionText Error evaluating Wetterstation userReading windDirectionText: Undefined subroutine &UConv::direction2compasspoint called at (eval 263) line 1.

     2021-06-06 21:26:25   windSpeed       0
     2021-06-06 14:57:04   winddirText     N
   cmdStack:
     ++A00125788A6808C900040000000000
     ##A00125788A6808C90103
     ##A00125788A6808C901040000000001
   helper:
     HM_CMDNR   209
     getCfgList all
     getCfgListNo ,1,4
     mId        00AE
     peerFriend peerAct,peerVirt
     peerOpt    1p:THSensor,4:THSensor,p:THSensor
     regLst     0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1623007544.06137
       TmplTs     1623007544.06137
       cmdKey     1:1:0::Wetterstation:00AE:01:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- -addr2:data2-...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         tplDel     -tplDel-
         trgEventL  -peer- -condition-
         trgEventS  -peer- -condition-
         trgPressL  [(-peer-|{all})]
         trgPressS  [(-peer-|{all})]
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt    Charlotte_Heizungsventil_WindowRec,Charlotte_Heizungsventil_remote,Garten_links,Garten_rechts,Haustuerbeleuchtung,Hochbeet_links,Hochbeet_rechts,Markise,SchalterBeleuchtungVorgarten,Schuppen_Garten
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        0
       det        0
       raw        1
       tpl        0
     io:
       flgs       0
       newChn     +6808C9,00,00,00
       nextSend   1623007585.85463
       prefIO     
       rxt        0
       vccu       
       p:
         6808C9
         00
         00
         00
     mRssi:
       mNo        D1
       io:
         HMLANGW:
           -49
           -49
     peerIDsH:
     prt:
       bErr       0
       sProc      2
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_HMLANGW:
         avg        -55
         cnt        1
         lst        -55
         max        -55
         min        -55
     tmpl:
Attributes:
   .mId       00AE
   IODev      HMLANGW
   alias      Wetterstation
   appOptions { "template": "thermometer"}
   autoReadReg 4_reqStatus
   expert     rawReg
   firmware   1.6
   group      Wetterstation
   model      HM-WDS100-C6-O-2
   room       Wetter
   serialNr   PEQ0001456
   stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %, Helligkeit: brightness, Regen: rain mm/qm, Wind: windSpeed km/h,  Richtung: winddirText, Richtung in Grad: windDirection
   subType    THSensor


Das ist das neueste List. Obwohl ich nichts mehr mit ,,UConv" eingetragen habe, kommt zweimal eine Fehlermeldung.
Wo kommt die denn nun her. Ich habe gar nichts mehr mit ,,UConv"?

Ich hatte den Code aus Beitrag 2 eins zu eins eingetragen, ohne dass sich etwas getan hat.

Tobi, was soll rauskommen, wenn ich
ZitatWas kam dann nach einer Änderung des Readings windDirection raus?
ausgeführt habe? Bei mir tat sich nichts. Als Text stand trotzdem noch ,,N" da, obwohl die Windrichtung eine andere war.

ZitatDas ganze myUtils-Selbstbau-Gedöns ist doch schon lange nicht mehr notwendig. Diese Umrechnungen gibt es doch dank loredo schon vortrefflich in der UConv.pm
Ist das denn etwas anderes? Wenn ich das richtig verstanden habe, dann wird das doch auch in 99_myUtils eingefügt.

Ich verstehe nicht, was ich eintragen muss, zudem ich ja den Post 2 übernommen habe.

@MadMax-FHEM
ZitatIch sehe da keinen Aufruf von deiner Sub 'windDirName'...
Wie rufe ich die denn auf. Das verstehe ich noch nicht.

Danke und Grüße
Mandel
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MadMax-FHEM am 06 Juni 2021, 22:05:03
Bist du dem Link mal gefolgt, der u U. deine Anleitung war (wir aber nicht wissen, weil du es ja nicht postest)...

Naja: in einem userReadings z.B. oder mittels notify und setreading oder per at und setreading... Es gibt viele Möglichkeiten. Aber OHNE dass die Sub (regelmäßig) IRGENDWO aufgerufen wird (oder auch eine andere "Berechnungsfunktion"), wird halt auch KEIN Text als Reading kommen, woher denn auch.

Anmerkung von Frank beachten!
https://forum.fhem.de/index.php/topic,121502.msg1161166.html#msg1161166

EDIT: bzgl. des Fehlers im Reading: evtl. stammt das halt noch von der letzten (fehlgeschlagenen) "berechnung". Danach war ja (verm.) keine "Berechnung" mehr, du hast ja kein userReadings mehr (und verm. auch sonst nichts was das Reading [neu] schreiben würde/geschrieben hätte)...

Gruß, Joachim
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: Jamo am 06 Juni 2021, 22:46:02
Hallo Mandel,
das ganze mal strukturiert.

Ich nehme an, das dein Device als "6808C9" definiert ist.

1) Gib mal oben in fhem in die Kommandozeile " {ReadingsNum('6808C9','windDir',0)} " ein, dann siehst Du ob schon mal die richtige Zahl zurückgeliefert wird. Falls immer die '0' kommt, gibt es das Reading nicht. Dann den Namen des Readings anpassen.
Falls immer die 0 kommt, liefert die Routine auch immer "N", bei 0 Grad kommt immer Norden raus.

2) Danach gibst Du oben in fhem mal in die Kommandozeile {UConv::direction2compasspoint(90)} ein. Da sollte dann E rauskommen. Für 180 dann eben S, usw.
Falls das funktioniert gibst Du oben im fhem in die Kommandozeile:

3) {UConv::direction2compasspoint(ReadingsNum('6808C9','windDir',0))} ein. Damit weisst Du, das dein Reading und die Konversation funktionieren.

4) Dann das Userreading erstellen, und dann auch mal im Eventmonitor nachschauen. Evtl das reading manuell verändern, also oben in fhem in die Kommandozeile "setreading 6808C9 windDir 270" eingeben. Damit kannst Du das dann simulieren.

Das kann man doch ganz einfach der Reihe nach debuggen. 
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MadMax-FHEM am 06 Juni 2021, 22:57:38
1) ist unnötig, weil es das Reading windDir nicht gibt!
Sondern (verm.) windDirection heißt.
Und: $name in der FhemWeb-Zeile nicht funktionieren wird...
...darum wird auch 3) so nicht klappen.

Es würde nur gehen, wenn statt $name der tatsächliche Device-Name angegeben wird (zumindest für die FhemWeb-Zeile)...

Gruß, Joachim
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: Jamo am 06 Juni 2021, 22:59:34
Zitat von: MadMax-FHEM am 06 Juni 2021, 22:57:38
1) ist unnötig, weil es das Reading windDir nicht gibt!
Sondern (verm.) windDirection heißt.
Und: $name in der FhemWeb-Zeile nicht funktionieren wird...

Gruß, Joachim
Unnötig ist das nicht, wenn, dann wird Mandel das herausrausfinden.
Das mit dem $name habe ich korrigiert. Danke.

So wie ich geschrieben, der Reihe nach, ist es aber zielführend.
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: tobi925 am 07 Juni 2021, 08:53:06
Zitat von: MandelHL am 06 Juni 2021, 21:43:07
Tobi, was soll rauskommen, wenn ich ausgeführt habe? Bei mir tat sich nichts. Als Text stand trotzdem noch ,,N" da, obwohl die Windrichtung eine andere war.
Ist das denn etwas anderes? Wenn ich das richtig verstanden habe, dann wird das doch auch in 99_myUtils eingefügt.
Das "nichts" passiert ist glaube ich nicht. Evtl. eine Fehlermeldung im Log?
Und natürlich ist das was anderes. Dabei wird doch nichts in 99_myUtils kopiert! Das Einzige was in der 99_myUtils stehen sollte ist package main;
use UConv;
falls du noch kein Modul im Einsatz hast, das die UConv bereits geladen hat.
Dann klappt auch ein {UConv::direction2compasspoint(35)} zum Test in der Kommandozeile. Und dann funktionieren auch die Userreadings aus Beitrag #2.

Tobi
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 07 Juni 2021, 10:26:53
Ich bin zu doof und bitte, auf die Bestätigung zu verzichten   ::)

Ja, meine Anleitung ist von hier:
ZitatDie "Anleitung" stammt vermutlich von hier
https://forum.fhem.de/index.php/topic,54716.msg463802.html#msg463802

Und ich habe daraufhin mein reading so aufgebaut:
attr Wetterstation userReadings attr Wetterstation userReadings winddirText {windDirName(ReadingsVal("Wetterstation", "windDirection",""))}
Auch mit ,,windDir" habe ich es probiert. Das klappt nicht.

Danke, Tobi nun habe ich in der 99_myUtils.pm
package main;
use UConv;

eingefügt und
sub windDirName($) {
  my ($dir) = @_;
  my @winddir_name=("N","NNO","NO","ONO","O","OSO","SO","SSO","S","SSW","SW","WSW","W","WNW","NW","NNW");
  return $winddir_name[int((($dir + 11.25) % 360) / 22.5)];
}

gelöscht.

Eingetragen habe ich dann auch
attr Wetterstation userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))}, \
windDirectionIcon:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0),3)}


Nun klappt es auch mit
{UConv::direction2compasspoint(35)}
Es wird ,,NE" ausgeworfen.

Trotzdem wird mir das aber nicht richtig angezeigt:
Internals:
   DEF        6808C9
   FUUID      60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
   HMLANGW_MSGCNT 5
   HMLANGW_RAWMSG 0500003A0486706808C900000000D9420000C0492F14FF
   HMLANGW_RSSI -58
   HMLANGW_TIME 2021-06-07 10:27:30
   IODev      HMLANGW
   LASTInputDev HMLANGW
   MSGCNT     5
   NAME       Wetterstation
   NOTIFYDEV  global
   NR         88
   STATE      Temperatur: 21.7 °C, Feuchtigkeit: 66 %, Helligkeit: 255, Regen: 0 mm/qm, Wind: 7.3 km/h,  Richtung: N, Richtung in Grad: 235
   TYPE       CUL_HM
   chanNo     01
   lastMsg    No:04 - t:70 s:6808C9 d:000000 00D9420000C0492F14FF
   protCmdPend 3 CMDs_pending
   protLastRcv 2021-06-07 10:27:30
   protRcv    5 last_at:2021-06-07 10:27:30
   protState  CMDs_pending
   rssi_at_HMLANGW cnt:5 min:-58 max:-58 avg:-58 lst:-58
   CL:
     Authenticated 0
     BUF       
     FD         19
     FW_ID      137
     LASTACCESS 1623054545
     NAME       WEB_192.168.178.203_56454
     NR         138
     PEER       192.168.178.203
     PORT       56454
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     READINGS:
       2021-06-07 10:28:59   state           Connected
   READINGS:
     2021-06-06 12:34:49   D-firmware      1.6
     2021-06-06 12:34:49   D-serialNr      PEQ0001456
     2021-06-07 10:15:57   IODev           HMLANGW
     2021-06-07 10:27:30   battery         ok
     2021-06-07 10:27:30   brightness      255
     2021-06-07 10:16:45   cfgState        updating
     2021-06-07 10:16:45   commState       CMDs_pending
     2021-06-07 10:27:30   humidity        66
     2021-06-07 10:27:30   isRaining       0
     2021-06-02 07:35:17   peerList        13D5A503
     2021-06-06 12:36:20   powerOn         2021-06-06 12:36:20
     2021-06-07 10:27:30   rain            0
     2021-06-06 12:36:20   recentStateType info
     2021-06-07 10:27:30   state           T: 21.7 H: 66 W: 7.3 R: 0 IR: 0 WD: 235 WDR: 67.5 S: 20 B: 255
     2021-06-07 10:27:30   sunshine        20
     2021-06-07 10:27:30   temperature     21.7
     2021-06-06 12:36:20   unknown         06000030
     2021-06-07 10:27:30   windDirRange    67.5
     2021-06-07 10:27:30   windDirection   235
     2021-06-07 10:27:30   windDirectionIcon ⬋
     2021-06-07 10:27:30   windDirectionText SW
     2021-06-07 10:27:30   windSpeed       7.3
     2021-06-07 08:09:18   winddirText     N
   cmdStack:
     ++A00125788A6808C900040000000000
     ##A00125788A6808C90103
     ##A00125788A6808C901040000000001
   helper:
     HM_CMDNR   4
     PONtest    1
     getCfgList all
     getCfgListNo ,1,4
     mId        00AE
     peerFriend peerAct,peerVirt
     peerOpt    1p:THSensor,4:THSensor,p:THSensor
     regLst     0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1623053762.4724
       TmplTs     1623053762.4724
       cmdKey     1:1:0::Wetterstation:00AE:01:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- -addr2:data2-...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         tplDel     -tplDel-
         trgEventL  -peer- -condition-
         trgEventS  -peer- -condition-
         trgPressL  [(-peer-|{all})]
         trgPressS  [(-peer-|{all})]
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt    Charlotte_Heizungsventil_WindowRec,Charlotte_Heizungsventil_remote,Garten_links,Garten_rechts,Haustuerbeleuchtung,Hochbeet_links,Hochbeet_rechts,Markise,SchalterBeleuchtungVorgarten,Schuppen_Garten
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        0
       det        0
       raw        1
       tpl        0
     io:
       flgs       0
       newChn     +6808C9,00,00,00
       nextSend   1623054450.75437
       prefIO     
       rxt        0
       vccu       
       p:
         6808C9
         00
         00
         00
     mRssi:
       mNo        04
       io:
         HMLANGW:
           -52
           -52
     peerIDsH:
     prt:
       bErr       0
       sProc      2
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_HMLANGW:
         avg        -58
         cnt        5
         lst        -58
         max        -58
         min        -58
     tmpl:
Attributes:
   IODev      HMLANGW
   alias      Wetterstation
   appOptions { "template": "thermometer"}
   autoReadReg 4_reqStatus
   expert     rawReg
   firmware   1.6
   group      Wetterstation
   model      HM-WDS100-C6-O-2
   room       Wetter
   serialNr   PEQ0001456
   stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %, Helligkeit: brightness, Regen: rain mm/qm, Wind: windSpeed km/h,  Richtung: winddirText, Richtung in Grad: windDirection
   subType    THSensor
   userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))},
windDirectionIcon:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0),3)}


Ich weiß nicht, was jetzt noch falsch ist.

Danke für Eure Unterstützung
Mandel
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: tobi925 am 07 Juni 2021, 10:48:04
Hallo Mandel,
ist doch alles da:
     2021-06-07 10:27:30   windDirRange    67.5
     2021-06-07 10:27:30   windDirection   235
     2021-06-07 10:27:30   windDirectionIcon ⬋
     2021-06-07 10:27:30   windDirectionText SW


Tobi
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: frank am 07 Juni 2021, 11:15:37
aber im attr stateformat wird "winddirText" zur anzeige genutzt, nicht  "windDirectionText".   ;)
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 07 Juni 2021, 11:20:22
Klar, Danke. Das war es ... Wie einfach es dann am Ende doch war. Und vor allem wie man da auf die kleinste Kleinigkeit achten muss.

Ich danke Euch allen für die wieder einmal geduldige Unterstützung.

Eine Sache fällt mir aber auf:
2021-06-07 10:27:30   windDirectionIcon ⬋
     2021-06-07 10:27:30   windDirectionText SW


Ist der Windrichtungspfeil nicht falsch herum, wenn der Wind aud Südwest kommt, muss die Pfeilspitze doch in die andere Richtung zeigen.
Oder soll der tatsächlich dahin zeigen, woher der Wind kommt?
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: Damian am 07 Juni 2021, 11:28:50
Ich habe auch mal sowas als Grafik gebastelt: https://forum.fhem.de/index.php/topic,118329.msg1134210.html#msg1134210

PS Der Pfeil sollte zeigen wohin der Wind weht und nicht woher der Wind kommt
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 07 Juni 2021, 11:37:03
ZitatIch habe auch mal sowas als Grafik gebastelt: https://forum.fhem.de/index.php/topic,118329.msg1134210.html#msg1134210
Wow, das sieht ja Hammer aus. Ich habe ja gerade mit fhemApp angefangen. Das muss ich mir tatsächlich mal überlegen. So ist die Benutzeroberfläche ja echt richtig gut. Danke für den Link.

ZitatPS Der Pfeil sollte zeigen wohin der Wind weht und nicht woher der Wind kommt
Ja, so dache ich mir das auch. Da frage ich mich, wie man den dann einmal um 180 Grad dreht ...
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: Damian am 07 Juni 2021, 11:43:44
Zitat von: MandelHL am 07 Juni 2021, 11:37:03
Wow, das sieht ja Hammer aus. Ich habe ja gerade mit fhemApp angefangen. Das muss ich mir tatsächlich mal überlegen. So ist die Benutzeroberfläche ja echt richtig gut. Danke für den Link.

Dann kannst du dir mal überlegen, ob du nicht auch noch andere Daten deiner Wetterstation grafisch aufbereiten willst:

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_Wetterstation
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: frank am 07 Juni 2021, 12:36:50
ZitatDa frage ich mich, wie man den dann einmal um 180 Grad dreht ...
zb userreading anpassen:
windDirectionIcon:windDirection:.* {
  my $dir = ReadingsVal($name,'windDirection',0);
  UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 07 Juni 2021, 13:24:11
Zitatzb userreading anpassen:
Darauf muss man aber auch erst mal kommen. Klappt hervorragend, Danke.

Dafür ist hier dann auch der Anfängerbereich  :o

Jetzt wird's ein wenig off topic:
ZitatDann kannst du dir mal überlegen, ob du nicht auch noch andere Daten deiner Wetterstation grafisch aufbereiten willst.
Unbedingt! Und auch die anderen Sachen würde ich grafisch aufarbeiten wollen.
Hinter Deinem Link ist ja alles vorhanden, was aufzubereiten geht.

Das hatte ich ja mit fhemApp vor. Aber nun scheint doch Dein Vorschlag besser zu sein und ich bleibe zudem bei der bisherigen URL.

Ich sehe mir das an. Danke,
Mandel
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: frank am 07 Juni 2021, 13:36:58
ZitatIch habe nun doch eine Fehlermeldung in Bezug auf das Icon
du hast ja auch nicht den kompletten code benutzt. warum?
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 07 Juni 2021, 13:38:14
Ich hatte es gerade selbst festgestellt und deshalb den Beitrag wieder gelöscht. Hatte kein Copy and Paste gemacht.
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 07 Juni 2021, 15:30:20
ZitatDann kannst du dir mal überlegen, ob du nicht auch noch andere Daten deiner Wetterstation grafisch aufbereiten willst:

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_Wetterstation

Aber das ist ja dann nicht meine Wetterstation, die dadurch eingebunden wird. Oder verstehe ich das falsch?
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: Damian am 07 Juni 2021, 15:48:49
Zitat von: MandelHL am 07 Juni 2021, 15:30:20
Aber das ist ja dann nicht meine Wetterstation, die dadurch eingebunden wird. Oder verstehe ich das falsch?

Den ersten Teil kannst du weglassen und nur den zweiten für der Visualisierung mit deinen Wetterdaten-Readings nehmen.
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 07 Juni 2021, 16:02:01
ZitatwindDirectionIcon:windDirection:.* {
  my $dir = ReadingsVal($name,'windDirection',0);
  UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}

Ich habe alles probiert. Ich bekomme es aber nicht hin, den Pfeil zu drehen.

Ich bin davon ausgegangen, dass es dann komplett so aussehen müsste:
attr Wetterstation userReadings windDirectionText:windDirection:.* {UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0))}, \
windDirectionIcon:windDirection:.* {
  my $dir = ReadingsVal($name,'windDirection',0);
  UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}


Aber das scheint auch falsch zu sein. Kannst Du mir mal bitte die kompletten readings nennen. Danke.

ZitatDen ersten Teil kannst du weglassen und nur den zweiten für der Visualisierung mit deinen Wetterdaten-Readings nehmen.
Das ist ja mal ne Aufgabe für mich. Dafür stehe ich dann doch zu weit am Anfang und muss mich im fortgeschrittenem Stadium mal damit beschäftigen.
Würde ich gerne machen und habe ich auch probiert. Aber das war nix.
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: frank am 07 Juni 2021, 16:37:18
der code ist zum eingeben auf der detailseite in das attribut-eingabefeld.
komplett sieht es so aus:

windDirectionText:windDirection:.* {
  UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0));
},
windDirectionIcon:windDirection:.* {
  my $dir = ReadingsVal($name,'windDirection',0);
  UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}


wer fhem.cfg manuell editiert, der sollte natürlich auch wissen, was er tut (welche zeichen escaped werden müssen, etc...).  ;)
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: MandelHL am 08 Juni 2021, 10:01:11
ZitatDen ersten Teil kannst du weglassen und nur den zweiten für der Visualisierung mit deinen Wetterdaten-Readings nehmen.

@Damian: Ich bin ja nun doch neugierig und so ein bisschen passt das ja auch zum Thema.

Hast Du irgendwo ein Howto, was ich machen muss, damit die Werte aus meinen Readings entnommen werden?

Grüße
Mandel
Titel: Antw:Windrichtung als Text darstellen
Beitrag von: Damian am 08 Juni 2021, 10:05:54
In der Visualisierungsdefinition zur Wetterstation musst du nur dein Reading einsetzen:

card([DEIN DEVICE:DEIN TEMPERATUR-READING:col3d],"Außentemperatur","temp_outside",-10,60,undef,undef,"°C",\&temp_hue)|\

Doku zu card: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzeige_eines_Werteverlaufs_und_des_aktuellen_Wertes_mit_Hilfe_der_SVG-Funktion_card

Ansonsten musst du dir das Konzept zu uiTable von vorne durchlesen: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#:~:text=An%20dieser%20Stelle%20wird%20das,die%20Web%2DOberfl%C3%A4che%20bedient%20werden.