# Print initial password
id_token = self.client.tokens["id_token"]["token"]
expires_at = datetime.fromisoformat(
self.client.tokens["id_token"]["expires_at"]
)
print(f"Password: {id_token}")
print(f"Expires: {expires_at.strftime('%Y-%m-%d %H:%M:%S')}")
os.system('perl /opt/fhem/fhem.pl 7072 "setreading myBMW_broker username '+(self.client.mqtt_username)+'"')
#os.system('perl /opt/fhem/fhem.pl 7072 "setreading CarData topic '+(self.client.mqtt_username/vin)+'"')
os.system('perl /opt/fhem/fhem.pl 7072 "setreading myBMW_broker id_token '+(id_token)+'"')
print("Sent MQTT username and password to FHEM. Exiting ...")
"""
print("\nPress Ctrl+C to exit.")
self.running = True
try:
# Monitor tokens
self.client.run_token_monitor(stop_callback=lambda: not self.running)
except KeyboardInterrupt:
print("\nShutting down...")
finally:
self.running = False
print("BMW CarData Credentials Provider stopped.")
"""
Internals:
CID zigbee_server
DEF zigbee_server
FUUID 68e6a5ea-f33f-f310-5b5d-65c92dcc21436518
IODev mqtt2_server
LASTInputDev mqtt2_server
MSGCNT 332
NAME zigbee_server
NR 823
STATE on
TYPE MQTT2_DEVICE
eventCount 374
mqtt2_server_CONN mqtt2_server_192.168.1.12_57830
mqtt2_server_MSGCNT 332
mqtt2_server_TIME 2025-10-09 13:15:47
.DT:
DEVICETOPIC zigbee2mqtt/zigbee_server
.attraggr:
.attreour:
current
voltage
power
energy
.attrminint:
Helper:
DBLOG:
action:
logdb:
TIME 1760004702.17541
VALUE on
child_lock:
logdb:
TIME 1760004708.59577
VALUE LOCK
countdown:
logdb:
TIME 1760004708.59577
VALUE 0
current:
logdb:
TIME 1760008547.35525
VALUE 0.26
energy:
logdb:
TIME 1760008547.35525
VALUE 0.3
indicator_mode:
logdb:
TIME 1760004708.59577
VALUE off/on
linkquality:
logdb:
TIME 1760004708.59577
VALUE 140
power:
logdb:
TIME 1760008547.35525
VALUE 0
state:
logdb:
TIME 1760004708.59577
VALUE on
voltage:
logdb:
TIME 1760008547.35525
VALUE 240
READINGS:
2025-10-08 19:57:24 IODev mqtt2_server
2025-10-09 12:13:30 action on
2025-10-08 19:56:58 associatedWith zigbee_massi
2025-10-08 19:58:06 attrTemplateVersion 20220622
2025-10-09 13:15:47 child_lock LOCK
2025-10-09 13:15:47 countdown 0
2025-10-09 13:15:47 current 0.26
2025-10-09 13:15:47 energy 0.300988
2025-10-09 13:15:47 indicator_mode off/on
2025-10-09 13:15:47 linkquality 140
2025-10-09 13:15:47 power 59.28
2025-10-09 13:15:47 state on
2025-10-09 13:15:47 update_installed_version 4099
2025-10-09 13:15:47 update_latest_version 4099
2025-10-09 13:15:47 update_state idle
2025-10-09 13:15:47 voltage 240
Attributes:
DbLogExclude .*
DbLogInclude power,energy,current,voltage
devStateIcon {my $light = FW_makeImage(ReadingsVal($name,'state','off')); my $current = ReadingsVal($name,'current',0); my $pwr = ReadingsVal($name,'power',0); my $energy = ReadingsVal($name,'energy',0); my $voltage = ReadingsVal($name,'voltage',0); qq(<div> <a href="/fhem?cmd.dummy=set $name toggle&XHR=1">$light</a> Aktuell: $current A Spannung: $voltage V Leistung.: $pwr W Energy: $energy kwh<b></b>)}
devicetopic zigbee2mqtt/zigbee_server
disable 0
event-on-update-reading current,voltage,power,energy
genericDeviceType switch
icon message_socket
model zigbee2mqtt_plug_w_energy_measuring
readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
room Geräte->Systeme->MQTT2
setList on:noArg $DEVICETOPIC/set {"state":"ON"}
off:noArg $DEVICETOPIC/set {"state":"OFF"}
toggle:noArg $DEVICETOPIC/set {"state":"TOGGLE"}
setStateList on off toggle
Internals:
.COMMAND {
my $I = ReadingsVal("zigbee_server","current",0);
my $U = ReadingsVal("zigbee_server","voltage",0);
my $PF = 0.95;
# nur rechnen, wenn beides >0
if ($I > 0 && $U > 0) {
my $P = $I * $U * $PF;
fhem("setreading zigbee_server power $P");
DoTrigger("zigbee_server","power:$P");
my $E = ReadingsVal("zigbee_server","energy",0);
my $deltaHours = 1/60;
my $deltaE = $P / 1000 * $deltaHours;
fhem("setreading zigbee_server energy ".($E+$deltaE));
DoTrigger("zigbee_server","energy:".($E+$deltaE));
}
}
DEF zigbee_server:current|voltage {
my $I = ReadingsVal("zigbee_server","current",0);
my $U = ReadingsVal("zigbee_server","voltage",0);
my $PF = 0.95;
# nur rechnen, wenn beides >0
if ($I > 0 && $U > 0) {
my $P = $I * $U * $PF;
fhem("setreading zigbee_server power $P");
DoTrigger("zigbee_server","power:$P");
my $E = ReadingsVal("zigbee_server","energy",0);
my $deltaHours = 1/60;
my $deltaE = $P / 1000 * $deltaHours;
fhem("setreading zigbee_server energy ".($E+$deltaE));
DoTrigger("zigbee_server","energy:".($E+$deltaE));
}
}
FUUID 68e6a36b-f33f-f310-7c96-0f64ed4519f16599
NAME zigbee_server_notify
NR 820
NTFY_ORDER 50-ntest
REGEXP zigbee_server:current|voltage
STATE 2025-10-09 13:15:47
TRIGGERTIME 1760008547.35662
TYPE notify
eventCount 25
.attraggr:
.attrminint:
Helper:
DBLOG:
state:
logdb:
TIME 1759945579.32726
VALUE active
READINGS:
2025-10-09 13:14:33 state active
2025-10-09 13:15:47 triggeredByDev zigbee_server
2025-10-09 13:15:47 triggeredByEvent current: 0.26
Attributes:
DbLogExclude .*
icon logic
room Geräte->Systeme->MQTT2,System->Logik
Internals:
.FhemMetaInternals 1
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION ./configDB.conf
DEF ./configDB.conf .*:.*
FD 4
FUUID 5d14afb8-f33f-f310-a661-c7e1aa4457eb4558
FVERSION 93_DbLog.pm:v5.11.0-s29401/2024-12-05
MODE asynchronous
MODEL MYSQL
NAME logdb
NR 2
NTFY_ORDER 50-logdb
PID 2789
REGEXP .*:.*
SBP_PID 2869
SBP_STATE running
STATE connected
TYPE DbLog
UTF8 1
dbconn mysql:database=fhem;host=192.168.1.12;port=3306
dbuser fhemuser
eventCount 2122
.attraggr:
.attrminint:
.fhem:
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
OLDSTATE connected
PACKAGE main
READINGCOL 64
TC current
TH history
TYPECOL 64
UNITCOL 32
VALUECOL 128
VERSION 5.11.0
OLDREADINGS:
READINGS:
2025-10-09 13:25:15 CacheOverflowLastNum 0
2021-03-19 13:18:27 CacheOverflowLastState normal
2025-10-09 13:25:21 CacheUsage 8
2025-10-09 13:25:15 NextSync 2025-10-09 13:25:45 or when CacheUsage 500 is reached
2025-10-09 13:25:16 state connected
Attributes:
DbLogExclude .*
DbLogSelectionMode Exclude/Include
DbLogType Current/History
alias logdb
asyncMode 1
commitMode basic_ta:off
group Logging
icon audio_playlist
room System->Ausgabe->Logfiles
useCharfilter 1
verbose 0
2025-10-09 13:11:50.659 MQTT2_DEVICE zigbee_server energy: 0.302964
2025-10-09 13:11:50.659 MQTT2_DEVICE zigbee_server energy:0.302964
2025-10-09 13:11:50.659 MQTT2_DEVICE zigbee_server power: 59.28
2025-10-09 13:11:50.659 MQTT2_DEVICE zigbee_server power:59.28
2025-10-09 13:11:50.659 MQTT2_DEVICE zigbee_server energy: 0.303952
2025-10-09 13:11:50.659 MQTT2_DEVICE zigbee_server energy:0.303952
Zitat von: Gisbert am 09 Oktober 2025, 11:59:45ich hab noch eine Nachfrage zu der Klammersetzung bei einer sub.
...
Ist es beliebig Klammern bei der Anwendung zu benutzen?
Zitat von: yersinia am 09 Oktober 2025, 09:16:06Alternativ könntest du auch das Astro-Modul (commandref/wiki) nutzen, dieses berechnet dir die season
Zitat## summer = 20. März bis 21. September
Zitat von: Gisbert am 09 Oktober 2025, 08:00:03Damit kann ich in einem DOIF die sub summer oder !summer (für Winter) als Bedingung verwenden.
sub summer {
return (79 <= (localtime(time))[7] <= 264);
}