Hallo, könnte mir jemand ein Beispiel geben wie ich den Pfeil rechts hinbekomme, sodass die einzelnen Rauchmelder angezeigt werden damit man erkennen kann welcher angeschlagen hat?
Danke vorab.
Grüße Mirco
Zitat von: coolice am 06 Mai 2021, 18:13:47
Hallo, könnte mir jemand ein Beispiel geben wie ich den Pfeil rechts hinbekomme, sodass die einzelnen Rauchmelder angezeigt werden damit man erkennen kann welcher angeschlagen hat?
Danke vorab.
Grüße Mirco
Hallo Mirco,
z. B. in dem Du per Link auf eine entsprechende Gruppe verweist. Hier ein Beispiel mit Rollläden.
{ "panel": {"status": ["state:closed:geschlossen:100:success", "state:open:geöffnet:0:success", "state:undefined:teilweise geschlossen :50:success"], "btn": "mdi-chevron-right", "link": "/devices/group=Rollläden"},"name":"Jalousien" }
Viele Grüße
Marian
Ein wichtiger Bestandteil von FHEMApp bildet die Konfiguration von Templates. Wenn Ihr Fragen zur Konfiguration via appOptions oder zur Erstellung eigener Templates habt, dann könnt ihr diese hier einstellen.
Ich versuche gerade das Shutter-Template zu verändern. Ich hätte gerne, dass bei
geöffnet: der Balken ganz orange
geschlossen: der Balken ganz grün
und dazwischen: der Balken in Prozenten gelb
angezeigt wird.
Dazu habe ich das Template wie folgt verändert:
{
"name": "shutter3",
"author": "jemu75/BHE",
"date": "2021-05-11",
"status": {
"bar": ["pct:0:100:success","pct:100:100:orange","pct::%n:yellow"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["motor:stop:off","motor::stop"],
"leftLong": ["motor::off"],
"leftLongRelease": ["motor::stop"],
"text": ["motor:up:öffnet...","motor:down:schließt...","pct:1:offen","pct::geschlossen"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["motor:stop:on","motor::stop"],
"rightLong": ["motor::on"],
"rightLongRelease": ["motor::stop"]
}
],
"info": {
"left1": ["motor:up::mdi-window-shutter-alert","motor:down::mdi-window-shutter-alert","pct:1::mdi-window-shutter-open","pct:::mdi-window-shutter"],
"left2": ["pct::%s% geöffnet"]
}
}
Damit ist der Balken aber immer komplett grün.
Beim Switch funktioniert das doch auch mit
"bar": ["state:on:100:success","state:off:0:success"],
Warum bei mir nicht?
Grüße Bernd
Zitat von: Cluni am 11 Mai 2021, 13:08:26
Ich versuche gerade das Shutter-Template zu verändern. Ich hätte gerne, dass bei
geöffnet: der Balken ganz orange
geschlossen: der Balken ganz grün
und dazwischen: der Balken in Prozenten gelb
angezeigt wird.
Dazu habe ich das Template wie folgt verändert:
{
"name": "shutter3",
"author": "jemu75/BHE",
"date": "2021-05-11",
"status": {
"bar": ["pct:0:100:success","pct:100:100:orange","pct::%n:yellow"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["motor:stop:off","motor::stop"],
"leftLong": ["motor::off"],
"leftLongRelease": ["motor::stop"],
"text": ["motor:up:öffnet...","motor:down:schließt...","pct:1:offen","pct::geschlossen"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["motor:stop:on","motor::stop"],
"rightLong": ["motor::on"],
"rightLongRelease": ["motor::stop"]
}
],
"info": {
"left1": ["motor:up::mdi-window-shutter-alert","motor:down::mdi-window-shutter-alert","pct:1::mdi-window-shutter-open","pct:::mdi-window-shutter"],
"left2": ["pct::%s% geöffnet"]
}
}
Damit ist der Balken aber immer komplett grün.
Beim Switch funktioniert das doch auch mit
"bar": ["state:on:100:success","state:off:0:success"],
Warum bei mir nicht?
Grüße Bernd
Es liegt an der Reihenfolge. Die Wertprüfung bei Zahlenwerte funktioniert nach "größer oder gleich". D.h. die Definition mit dem größten Wert muss immer zuerst angegeben werden. Danach in absteigender Folge alle weitere Werte. In deinem Fall dann
1) 100 -> orange
2) 1 -> yellow
3) 0 -> success
I'm letzten Prüfschritt kannst du den Wert (im Beispiel die 0) weglassen. Dann wird die Farbe für alle restliche Werte angezeigt.
Melde Dich gern, wenn Du noch Fragen hast. :)
Yes, dank dir - kaum macht man es richtig, schon funktioniert es...
Für den Fall, dass jemand das Template haben möchte:
{
{
"name": "shutter3",
"author": "jemu75/BHE",
"date": "2021-05-11",
"status": {
"bar": ["pct:100:100:orange","pct:1:%n:yellow","pct:0:100:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["motor:stop:off","motor::stop"],
"leftLong": ["motor::off"],
"leftLongRelease": ["motor::stop"],
"text": ["motor:up:öffnet...","motor:down:schließt...","pct:100:offen","pct:1:%s %","pct:0:geschlossen"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["motor:stop:on","motor::stop"],
"rightLong": ["motor::on"],
"rightLongRelease": ["motor::stop"]
}
],
"info": {
"left1": ["motor:up::mdi-window-shutter-alert","motor:down::mdi-window-shutter-alert","pct:1::mdi-window-shutter-open","pct:::mdi-window-shutter"]
}
}
Hallo Cluni,
sieht prima aus, würde ich evtl. übernehmen.
Welchen Aktor verwendest du für die Rolladen? Ich habe den Shelly2.5 und experimentiere noch daran herum, habe anstatt
"leftClick": ["motor:stop:off","motor::stop"]
bei Shelly z.B.
"leftClick": ["state:stop:off","state::stop"]
eingesetzt, klappt nicht so richtig.
Reaktion sollte sein, dass der Rollo bei einmaligen Click fährt (z.B. hoch), bei nochmaligen Click stoppt usw.
Komme da nicht richtig weiter..., evtl. habe ich ja Donnerstag Zeit für weiteres Testen... ;D
VG
Pit
Zitat von: piet_pit am 11 Mai 2021, 20:39:22
Hallo Cluni,
sieht prima aus, würde ich evtl. übernehmen.
Welchen Aktor verwendest du für die Rolladen? Ich habe den Shelly2.5 und experimentiere noch daran herum, habe anstatt
"leftClick": ["motor:stop:off","motor::stop"]
bei Shelly z.B.
"leftClick": ["state:stop:off","state::stop"]
eingesetzt, klappt nicht so richtig.
Reaktion sollte sein, dass der Rollo bei einmaligen Click fährt (z.B. hoch), bei nochmaligen Click stoppt usw.
Komme da nicht richtig weiter..., evtl. habe ich ja Donnerstag Zeit für weiteres Testen... ;D
VG
Pit
Kannst du bitte mal ein jsonlist2 von einem deiner shelly2.5 Aktoren posten.
Hallo Jemu75,
anbei dieses jsonlist2 des Shelly2.5, an dem führe ich meine "Experimente" durch.
Ich nutze für den Shelly2.5 das von FHEM bereitgestellte Template MQTT (danke nochmals an Beta-User) sowie das ASC von Cooltux (danke auch an Cooltux).
{
"Name":"Buero_Rollo_Vorne",
"PossibleSets":"opens:noArg closes:noArg open:noArg close:noArg half:noArg stop:noArg pct:slider,0,1,100 x_recalibration:noArg x_update:noArg x_mqttcom attrTemplate:?,General_Info,MQTT2_CLIENT_general_bridge,MQTT2_IO_ignoreRegexp_basic,MQTT2_IO_ignoreRegexp_tasmota,MQTT2_IO_ignoreRegexp_shelly,MQTT2_IO_ignoreRegexp_homeassistant,speechcontrol_general_naming_master_template,speech_recognition_general_naming_master_template,tasmota_basic,tasmota_basic_state_power1,tasmota_1ch+motion+SI7021,tasmota_POW,tasmota_POW_USB_split,tasmota_plug_with_rgbw_split,tasmota_ir,tasmota_rf,tasmota_rf_keys_example,tasmota_use_DS18x20_id,tasmota_zigbee2tasmota_bridge,tasmota_clear_readings_reset_readingsList_and_reboot,tasmota_set_lowercase_texts_and_state1,tasmota_set_uppercase_texts_and_state1,tasmota_set_power1_state_to_power,tasmota_2channel_split,tasmota_2ch_unified,tasmota_2ch_shutter_invert_1,tasmota_2ch_shutter_invert_0,tasmota_4ch_two_shutters_invert_0,tasmota_3channel_input_shelly_i3,tasmota_4channel_split,tasmota_3socketUSB_split,tasmota_4ch_unified_basic_text,tasmota_4ch_unified_icon,tasmota_8ch_unified_icon,tasmota_8channel_split,tasmota_rgb_led_controller,tasmota_rgbw_led,tasmota_rgbcct_light,tasmota_cct_led,tasmota_TuyaMCU_dimmer,tasmota_window_sensor_MC400A,shelly1,shelly_announces,shellyplug,shelly1_w_energy_measuring,shelly1_w_energy_measuring_washer_example,shelly3em,shelly2_split,shelly25_split,shelly2_roller,shelly25_roller_invert_0,shelly25_roller_invert_1,shelly4pro_split,shelly4pro_unified,shellybulb,shellyduo,shellymotion,shellyht,shellyflood,shellygas,shellydw,shelly_ix3,shelly2rgbw_color,shelly2rgbw_4w_split,shellydimmer,ESPurna_single_relay,eBus_daemon_splitter,ems-esp_heater_device,ems-esp_heater_device_outdated,ems-esp_boiler,ems-esp_boiler_outdated,ems-esp_thermostat_read-only,ems-esp_thermostat_read-only_outdated,ems-esp_thermostat_simple,ems-esp_thermostat_RC35_type,ems-esp_thermostat_simple_outdated,ems-esp_thermostat_RC35_type_outdated,zigbee2mqtt_bridge,sonos2mqtt_bridge,sonos2mqtt_speaker,sonos2mqtt_bridge_comfort,InstarCam,wled_controller,go_eCharger,8channel_ethernet_board_split,8channel_ethernet_board_unified,6channel_ethernet_board_6input_split,6channel_ethernet_board_6input_unified,esp_milight_hub_bridge,OpenMQTTGateway_MCU,worx_landroid,wallpanel_app,weewx_weather_station,McLighting,roon",
"PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userattr userReadings:textField-long verbose:0,1,2,3,4,5 IODev autocreate:0,1 bridgeRegexp:textField-long devicetopic devPos disable:0,1 disabledForIntervals getList:textField-long imageLink jsonMap:textField-long model periodicCmd readingList:textField-long setExtensionsEvent:1,0 setList:textField-long setStateList event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading ASC:0,1,2 alexaName alexaProactiveEvents:1,0 alexaRoom appOptions:textField-long cmdIcon devStateIcon devStateIcon:textField-long devStateStyle fhem_widget_channels fm_type genericDeviceType:ignore,switch,outlet,light,blind,thermometer,thermostat,garage,window,lock homebridgeMapping:textField-long icon siriName sortby webCmd webCmdLabel:textField-long widgetOverride ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate",
"Internals": {
"CID": "shellyswitch25_E8DB84AA1A65",
"DEF": "shellyswitch25_E8DB84AA1A65",
"DEVICETOPIC": "Buero_Rollo_Vorne",
"FUUID": "60885abe-f33f-3896-dadb-68bd7993e1d25997",
"IODev": "pietMQTT2",
"LASTInputDev": "pietMQTT2",
"MSGCNT": "65063",
"NAME": "Buero_Rollo_Vorne",
"NR": "278",
"STATE": "<a href=\"http://192.168.178.200\" target=\"_blank\">\ntrue\n</a>\n36/stop",
"TYPE": "MQTT2_DEVICE",
"pietMQTT2_MSGCNT": "65063",
"pietMQTT2_TIME": "2021-05-12 12:23:42"
},
"Readings": {
"ASC_Enable": { "Value":"on", "Time":"2021-04-27 20:53:57" },
"ASC_ShuttersLastDrive": { "Value":"day open", "Time":"2021-05-12 08:15:09" },
"ASC_Time_DriveDown": { "Value":"12.05.2021 - 21:51", "Time":"2021-05-12 08:15:01" },
"ASC_Time_DriveUp": { "Value":"13.05.2021 - 08:15", "Time":"2021-05-12 08:15:01" },
"IODev": { "Value":"pietMQTT2", "Time":"2021-05-10 18:47:18" },
"associatedWith": { "Value":"pietASC", "Time":"2021-05-10 18:47:21" },
"attrTemplateVersion": { "Value":"20210126", "Time":"2021-04-27 20:46:03" },
"current": { "Value":"stop", "Time":"2021-05-12 12:23:42" },
"energy": { "Value":"476", "Time":"2021-05-12 12:23:42" },
"fw_ver": { "Value":"20210429-100559/v1.10.4-g3f94cd7", "Time":"2021-05-11 14:41:01" },
"id": { "Value":"shellyswitch25-E8DB84AA1A65", "Time":"2021-05-11 14:41:01" },
"info_actions_stats_skipped": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_cfg_changed_cnt": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_cloud_connected": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_cloud_enabled": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_fs_free": { "Value":"146082", "Time":"2021-04-27 20:46:03" },
"info_fs_size": { "Value":"233681", "Time":"2021-04-27 20:46:03" },
"info_has_update": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_inputs_1_event": { "Value":"", "Time":"2021-04-27 20:46:03" },
"info_inputs_1_event_cnt": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_inputs_1_input": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_inputs_2_event": { "Value":"", "Time":"2021-04-27 20:46:03" },
"info_inputs_2_event_cnt": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_inputs_2_input": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_mac": { "Value":"E8DB84AA1A65", "Time":"2021-04-27 20:46:03" },
"info_meters_1_counters_1": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_1_counters_2": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_1_counters_3": { "Value":"116.961", "Time":"2021-04-27 20:46:03" },
"info_meters_1_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_meters_1_overpower": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_1_power": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_1_timestamp": { "Value":"1619556363", "Time":"2021-04-27 20:46:03" },
"info_meters_1_total": { "Value":"168", "Time":"2021-04-27 20:46:03" },
"info_meters_2_counters_1": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_2_counters_2": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_2_counters_3": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_2_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_meters_2_overpower": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_2_power": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_2_timestamp": { "Value":"1619556363", "Time":"2021-04-27 20:46:03" },
"info_meters_2_total": { "Value":"66", "Time":"2021-04-27 20:46:03" },
"info_mqtt_connected": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_overtemperature": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_ram_free": { "Value":"35988", "Time":"2021-04-27 20:46:03" },
"info_ram_total": { "Value":"49288", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_calibrating": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_current_pos": { "Value":"50", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_last_direction": { "Value":"open", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_overtemperature": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_positioning": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_power": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_safety_switch": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_source": { "Value":"http", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_state": { "Value":"stop", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_stop_reason": { "Value":"normal", "Time":"2021-04-27 20:46:03" },
"info_serial": { "Value":"25", "Time":"2021-04-27 20:46:03" },
"info_temperature": { "Value":"60.49", "Time":"2021-04-27 20:46:03" },
"info_temperature_status": { "Value":"Normal", "Time":"2021-04-27 20:46:03" },
"info_time": { "Value":"20:46", "Time":"2021-04-27 20:46:03" },
"info_tmp_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_tmp_tC": { "Value":"60.49", "Time":"2021-04-27 20:46:03" },
"info_tmp_tF": { "Value":"140.88", "Time":"2021-04-27 20:46:03" },
"info_unixtime": { "Value":"1619549163", "Time":"2021-04-27 20:46:03" },
"info_update_has_update": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_update_new_version": { "Value":"20210415-130044/v1.10.3-g23074d0", "Time":"2021-04-27 20:46:03" },
"info_update_old_version": { "Value":"20210415-130044/v1.10.3-g23074d0", "Time":"2021-04-27 20:46:03" },
"info_update_status": { "Value":"idle", "Time":"2021-04-27 20:46:03" },
"info_uptime": { "Value":"306", "Time":"2021-04-27 20:46:03" },
"info_voltage": { "Value":"230.87", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_connected": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_ip": { "Value":"192.168.178.200", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_rssi": { "Value":"-80", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_ssid": { "Value":"barsch_1", "Time":"2021-04-27 20:46:03" },
"input0": { "Value":"0", "Time":"2021-05-12 12:23:42" },
"input1": { "Value":"0", "Time":"2021-05-12 12:23:42" },
"ip": { "Value":"192.168.178.200", "Time":"2021-05-11 14:41:01" },
"mac": { "Value":"E8DB84AA1A65", "Time":"2021-05-11 14:41:01" },
"model": { "Value":"SHSW-25", "Time":"2021-05-11 14:41:01" },
"new_fw": { "Value":"false", "Time":"2021-05-11 14:41:01" },
"online": { "Value":"true", "Time":"2021-05-11 14:41:01" },
"overtemperature": { "Value":"0", "Time":"2021-05-12 12:23:42" },
"pct": { "Value":"36", "Time":"2021-05-12 12:23:42" },
"power": { "Value":"0.00", "Time":"2021-05-12 12:23:42" },
"roller_0_energy": { "Value":"476", "Time":"2021-05-12 12:23:42" },
"roller_0_power": { "Value":"0.00", "Time":"2021-05-12 12:23:42" },
"roller_0_stop_reason": { "Value":"normal", "Time":"2021-05-12 12:23:42" },
"state": { "Value":"36", "Time":"2021-05-12 12:23:42" },
"temperature": { "Value":"60.86", "Time":"2021-05-12 12:23:42" },
"temperature_f": { "Value":"141.55", "Time":"2021-05-12 12:23:42" },
"temperature_status": { "Value":"Normal", "Time":"2021-05-12 12:23:42" },
"x_mqttcom": { "Value":"set announce", "Time":"2021-04-27 20:46:03" }
},
"Attributes": {
"ASC": "2",
"ASC_Pos_Reading": "pct",
"ASC_Time_Up_Early": "08:15",
"ASC_Up": "time",
"IODev": "pietMQTT2",
"appOptions": "{ \"template\": \"shutter\"}",
"cmdIcon": "open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50",
"comment": "Shelly 2.5 in Roller-Mode. 100=opened / 0=closed",
"devStateIcon": ".*/open:fts_shutter_up@red .*/close:fts_shutter_down@red true:10px-kreis-gruen false:10px-kreis-rot 0/stop:fts_shutter_100 100/stop:fts_shutter_10 9\u005cd/stop:fts_shutter_10 8\u005cd/stop:fts_shutter_20 7\u005cd/stop:fts_shutter_30 6\u005cd/stop:fts_shutter_40 5\u005cd/stop:fts_shutter_50 4\u005cd/stop:fts_shutter_60 3\u005cd/stop:fts_shutter_70 2\u005cd/stop:fts_shutter_80 1\u005cd/stop:fts_shutter_90 0\u005cd/stop:fts_shutter_100 set_.*:fts_shutter_updown",
"event-on-change-reading": "ASC_.*,pct",
"eventMap": "open:opens close:closes",
"genericDeviceType": "blind",
"model": "shelly25_roller_invert_0",
"readingList": "shellies/shellyswitch25-E8DB84AA1A65/roller/0/pos:.* pct\n shellies/shellyswitch25-E8DB84AA1A65/status/0/rollers:.* power\n shellies/shellyswitch25-E8DB84AA1A65/online:.* online\n shellies/shellyswitch25-E8DB84AA1A65/announce:.* { json2nameValue($EVENT) }\n shellies/announce:.* { $EVENT =~ m,..id...shellyswitch25-E8DB84AA1A65...mac.*, ? json2nameValue($EVENT) : return }\n shellies/shellyswitch25-E8DB84AA1A65/roller/0:.* current\n shellies/shellyswitch25-E8DB84AA1A65/roller/0:open {{'state' => 'opening'}}\n shellies/shellyswitch25-E8DB84AA1A65/roller/0:close {{'state' => 'closing'}}\n shellies/shellyswitch25-E8DB84AA1A65/roller/0/pos:.* state\n shellies/shellyswitch25-E8DB84AA1A65/input/1:.* input1\n shellies/shellyswitch25-E8DB84AA1A65/input/0:.* input0\n shellies/shellyswitch25-E8DB84AA1A65/relay/power:.* power\n shellies/shellyswitch25-E8DB84AA1A65/relay/energy:.* energy\n shellies/shellyswitch25-E8DB84AA1A65/temperature:.* temperature\n shellies/shellyswitch25-E8DB84AA1A65/overtemperature:.* overtemperature\n shellies/shellyswitch25-E8DB84AA1A65/roller/0/power:.* roller_0_power\n shellies/shellyswitch25-E8DB84AA1A65/roller/0/energy:.* roller_0_energy\n shellies/shellyswitch25-E8DB84AA1A65/temperature_f:.* temperature_f\nshellyswitch25_E8DB84AA1A65:shellies/shellyswitch25-E8DB84AA1A65/info:.* { json2nameValue($EVENT, 'info_', $JSONMAP) }\nshellyswitch25_E8DB84AA1A65:shellies/shellyswitch25-E8DB84AA1A65/roller/0/stop_reason:.* roller_0_stop_reason\nshellyswitch25_E8DB84AA1A65:shellies/shellyswitch25-E8DB84AA1A65/temperature_status:.* temperature_status",
"room": "Buero,MQTT2_DEVICE",
"setList": "open:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command open\n close:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command close\n half:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command/pos 50\n stop:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command stop\n pct:slider,0,1,100 shellies/shellyswitch25-E8DB84AA1A65/roller/0/command/pos $EVTPART1\n x_recalibration:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command rc\n x_update:noArg shellies/shellyswitch25-E8DB84AA1A65/command update_fw\n x_mqttcom shellies/shellyswitch25-E8DB84AA1A65/command $EVTPART1",
"setStateList": "open close half stop pct",
"stateFormat": "<a href=\"http://ip\" target=\"_blank\">\nonline\n</a>\nstate/current",
"userattr": "ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate",
"webCmd": ":open:close:half:stop:pct"
}
},
vielen Dank und viele Grüße
Pit
Zitat von: piet_pit am 11 Mai 2021, 20:39:22
sieht prima aus, würde ich evtl. übernehmen.
Welchen Aktor verwendest du für die Rolladen? Ich habe den Shelly2.5 und experimentiere noch daran herum...
Hi Pit,
ich benutze schon seit Jahren Homematic Aktoren Typ HM-LC-BL1-FM. Ich habe zwar auch ein paar Shellys zu Hause, aber schon älteren Datums (Shelly 1 und 2). Diese nutze ich aber bis jetzt nicht als Rollladenaktoren. Daher kann ich dir leider nicht sagen, wie das da aussehen müsste, aber wenn ich mir dein list anschaue, dann würde ich sagen, dass das unter main wie folgt aussehen müsste
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["state:stop:close","state::stop"],
"leftLong": ["state::close"],
"leftLongRelease": ["state::stop"],
"text": ["state:opening:öffnet...","state:closing:schließt...","pct:100:offen","pct:1:%s %","pct:0:geschlossen"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["state:stop:open","state::stop"],
"rightLong": ["state::open"],
"rightLongRelease": ["state::stop"]
}
Bei "text" müsste man nochmal gucken, ob das so hinhaut.
Gerade nochmal geschaut. Müsste so passen:
{
"name": "shellyshutter",
"author": "jemu75/BHE",
"date": "2021-05-12",
"status": {
"bar": ["pct:100:100:orange","pct:1:%n:yellow","pct:0:100:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["state:stop:close","state::stop"],
"leftLong": ["state::close"],
"leftLongRelease": ["state::stop"],
"text": ["state:opening:öffnet...","state:closing:schließt...","pct:100:offen","pct:1:%s %","pct:0:geschlossen"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["state:stop:open","state::stop"],
"rightLong": ["state::open"],
"rightLongRelease": ["state::stop"]
}
],
"info": {
"left1": ["motor:up::mdi-window-shutter-alert","motor:down::mdi-window-shutter-alert","pct:1::mdi-window-shutter-open","pct:::mdi-window-shutter"]
}
}
Ich habe das Template nun shellyshutter genannt.
Hallo Cluni,
vielen Dank für die Hilfe, der Balken und die Farbänderungen klappen einwandfrei.
Was nicht klappt, ist das Verhalten bei leftclick (über den Browser).
1* leftclick > Rollo fährt runter > ok!
2tes mal leftclick > Rollo stoppt kurz (?) und fährt weiter runter, es bleibt nicht stehen >:(
Gleiches wenn das Rollo hoch fährt.
Viele Grüße
Pit
Zitat von: piet_pit am 12 Mai 2021, 12:31:55
Hallo Jemu75,
anbei dieses jsonlist2 des Shelly2.5, an dem führe ich meine "Experimente" durch.
Ich nutze für den Shelly2.5 das von FHEM bereitgestellte Template MQTT (danke nochmals an Beta-User) sowie das ASC von Cooltux (danke auch an Cooltux).
{
"Name":"Buero_Rollo_Vorne",
"PossibleSets":"opens:noArg closes:noArg open:noArg close:noArg half:noArg stop:noArg pct:slider,0,1,100 x_recalibration:noArg x_update:noArg x_mqttcom attrTemplate:?,General_Info,MQTT2_CLIENT_general_bridge,MQTT2_IO_ignoreRegexp_basic,MQTT2_IO_ignoreRegexp_tasmota,MQTT2_IO_ignoreRegexp_shelly,MQTT2_IO_ignoreRegexp_homeassistant,speechcontrol_general_naming_master_template,speech_recognition_general_naming_master_template,tasmota_basic,tasmota_basic_state_power1,tasmota_1ch+motion+SI7021,tasmota_POW,tasmota_POW_USB_split,tasmota_plug_with_rgbw_split,tasmota_ir,tasmota_rf,tasmota_rf_keys_example,tasmota_use_DS18x20_id,tasmota_zigbee2tasmota_bridge,tasmota_clear_readings_reset_readingsList_and_reboot,tasmota_set_lowercase_texts_and_state1,tasmota_set_uppercase_texts_and_state1,tasmota_set_power1_state_to_power,tasmota_2channel_split,tasmota_2ch_unified,tasmota_2ch_shutter_invert_1,tasmota_2ch_shutter_invert_0,tasmota_4ch_two_shutters_invert_0,tasmota_3channel_input_shelly_i3,tasmota_4channel_split,tasmota_3socketUSB_split,tasmota_4ch_unified_basic_text,tasmota_4ch_unified_icon,tasmota_8ch_unified_icon,tasmota_8channel_split,tasmota_rgb_led_controller,tasmota_rgbw_led,tasmota_rgbcct_light,tasmota_cct_led,tasmota_TuyaMCU_dimmer,tasmota_window_sensor_MC400A,shelly1,shelly_announces,shellyplug,shelly1_w_energy_measuring,shelly1_w_energy_measuring_washer_example,shelly3em,shelly2_split,shelly25_split,shelly2_roller,shelly25_roller_invert_0,shelly25_roller_invert_1,shelly4pro_split,shelly4pro_unified,shellybulb,shellyduo,shellymotion,shellyht,shellyflood,shellygas,shellydw,shelly_ix3,shelly2rgbw_color,shelly2rgbw_4w_split,shellydimmer,ESPurna_single_relay,eBus_daemon_splitter,ems-esp_heater_device,ems-esp_heater_device_outdated,ems-esp_boiler,ems-esp_boiler_outdated,ems-esp_thermostat_read-only,ems-esp_thermostat_read-only_outdated,ems-esp_thermostat_simple,ems-esp_thermostat_RC35_type,ems-esp_thermostat_simple_outdated,ems-esp_thermostat_RC35_type_outdated,zigbee2mqtt_bridge,sonos2mqtt_bridge,sonos2mqtt_speaker,sonos2mqtt_bridge_comfort,InstarCam,wled_controller,go_eCharger,8channel_ethernet_board_split,8channel_ethernet_board_unified,6channel_ethernet_board_6input_split,6channel_ethernet_board_6input_unified,esp_milight_hub_bridge,OpenMQTTGateway_MCU,worx_landroid,wallpanel_app,weewx_weather_station,McLighting,roon",
"PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userattr userReadings:textField-long verbose:0,1,2,3,4,5 IODev autocreate:0,1 bridgeRegexp:textField-long devicetopic devPos disable:0,1 disabledForIntervals getList:textField-long imageLink jsonMap:textField-long model periodicCmd readingList:textField-long setExtensionsEvent:1,0 setList:textField-long setStateList event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading ASC:0,1,2 alexaName alexaProactiveEvents:1,0 alexaRoom appOptions:textField-long cmdIcon devStateIcon devStateIcon:textField-long devStateStyle fhem_widget_channels fm_type genericDeviceType:ignore,switch,outlet,light,blind,thermometer,thermostat,garage,window,lock homebridgeMapping:textField-long icon siriName sortby webCmd webCmdLabel:textField-long widgetOverride ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate",
"Internals": {
"CID": "shellyswitch25_E8DB84AA1A65",
"DEF": "shellyswitch25_E8DB84AA1A65",
"DEVICETOPIC": "Buero_Rollo_Vorne",
"FUUID": "60885abe-f33f-3896-dadb-68bd7993e1d25997",
"IODev": "pietMQTT2",
"LASTInputDev": "pietMQTT2",
"MSGCNT": "65063",
"NAME": "Buero_Rollo_Vorne",
"NR": "278",
"STATE": "<a href=\"http://192.168.178.200\" target=\"_blank\">\ntrue\n</a>\n36/stop",
"TYPE": "MQTT2_DEVICE",
"pietMQTT2_MSGCNT": "65063",
"pietMQTT2_TIME": "2021-05-12 12:23:42"
},
"Readings": {
"ASC_Enable": { "Value":"on", "Time":"2021-04-27 20:53:57" },
"ASC_ShuttersLastDrive": { "Value":"day open", "Time":"2021-05-12 08:15:09" },
"ASC_Time_DriveDown": { "Value":"12.05.2021 - 21:51", "Time":"2021-05-12 08:15:01" },
"ASC_Time_DriveUp": { "Value":"13.05.2021 - 08:15", "Time":"2021-05-12 08:15:01" },
"IODev": { "Value":"pietMQTT2", "Time":"2021-05-10 18:47:18" },
"associatedWith": { "Value":"pietASC", "Time":"2021-05-10 18:47:21" },
"attrTemplateVersion": { "Value":"20210126", "Time":"2021-04-27 20:46:03" },
"current": { "Value":"stop", "Time":"2021-05-12 12:23:42" },
"energy": { "Value":"476", "Time":"2021-05-12 12:23:42" },
"fw_ver": { "Value":"20210429-100559/v1.10.4-g3f94cd7", "Time":"2021-05-11 14:41:01" },
"id": { "Value":"shellyswitch25-E8DB84AA1A65", "Time":"2021-05-11 14:41:01" },
"info_actions_stats_skipped": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_cfg_changed_cnt": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_cloud_connected": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_cloud_enabled": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_fs_free": { "Value":"146082", "Time":"2021-04-27 20:46:03" },
"info_fs_size": { "Value":"233681", "Time":"2021-04-27 20:46:03" },
"info_has_update": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_inputs_1_event": { "Value":"", "Time":"2021-04-27 20:46:03" },
"info_inputs_1_event_cnt": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_inputs_1_input": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_inputs_2_event": { "Value":"", "Time":"2021-04-27 20:46:03" },
"info_inputs_2_event_cnt": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_inputs_2_input": { "Value":"0", "Time":"2021-04-27 20:46:03" },
"info_mac": { "Value":"E8DB84AA1A65", "Time":"2021-04-27 20:46:03" },
"info_meters_1_counters_1": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_1_counters_2": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_1_counters_3": { "Value":"116.961", "Time":"2021-04-27 20:46:03" },
"info_meters_1_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_meters_1_overpower": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_1_power": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_1_timestamp": { "Value":"1619556363", "Time":"2021-04-27 20:46:03" },
"info_meters_1_total": { "Value":"168", "Time":"2021-04-27 20:46:03" },
"info_meters_2_counters_1": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_2_counters_2": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_2_counters_3": { "Value":"0.000", "Time":"2021-04-27 20:46:03" },
"info_meters_2_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_meters_2_overpower": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_2_power": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_meters_2_timestamp": { "Value":"1619556363", "Time":"2021-04-27 20:46:03" },
"info_meters_2_total": { "Value":"66", "Time":"2021-04-27 20:46:03" },
"info_mqtt_connected": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_overtemperature": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_ram_free": { "Value":"35988", "Time":"2021-04-27 20:46:03" },
"info_ram_total": { "Value":"49288", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_calibrating": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_current_pos": { "Value":"50", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_last_direction": { "Value":"open", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_overtemperature": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_positioning": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_power": { "Value":"0.00", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_safety_switch": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_source": { "Value":"http", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_state": { "Value":"stop", "Time":"2021-04-27 20:46:03" },
"info_rollers_1_stop_reason": { "Value":"normal", "Time":"2021-04-27 20:46:03" },
"info_serial": { "Value":"25", "Time":"2021-04-27 20:46:03" },
"info_temperature": { "Value":"60.49", "Time":"2021-04-27 20:46:03" },
"info_temperature_status": { "Value":"Normal", "Time":"2021-04-27 20:46:03" },
"info_time": { "Value":"20:46", "Time":"2021-04-27 20:46:03" },
"info_tmp_is_valid": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_tmp_tC": { "Value":"60.49", "Time":"2021-04-27 20:46:03" },
"info_tmp_tF": { "Value":"140.88", "Time":"2021-04-27 20:46:03" },
"info_unixtime": { "Value":"1619549163", "Time":"2021-04-27 20:46:03" },
"info_update_has_update": { "Value":"false", "Time":"2021-04-27 20:46:03" },
"info_update_new_version": { "Value":"20210415-130044/v1.10.3-g23074d0", "Time":"2021-04-27 20:46:03" },
"info_update_old_version": { "Value":"20210415-130044/v1.10.3-g23074d0", "Time":"2021-04-27 20:46:03" },
"info_update_status": { "Value":"idle", "Time":"2021-04-27 20:46:03" },
"info_uptime": { "Value":"306", "Time":"2021-04-27 20:46:03" },
"info_voltage": { "Value":"230.87", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_connected": { "Value":"true", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_ip": { "Value":"192.168.178.200", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_rssi": { "Value":"-80", "Time":"2021-04-27 20:46:03" },
"info_wifi_sta_ssid": { "Value":"barsch_1", "Time":"2021-04-27 20:46:03" },
"input0": { "Value":"0", "Time":"2021-05-12 12:23:42" },
"input1": { "Value":"0", "Time":"2021-05-12 12:23:42" },
"ip": { "Value":"192.168.178.200", "Time":"2021-05-11 14:41:01" },
"mac": { "Value":"E8DB84AA1A65", "Time":"2021-05-11 14:41:01" },
"model": { "Value":"SHSW-25", "Time":"2021-05-11 14:41:01" },
"new_fw": { "Value":"false", "Time":"2021-05-11 14:41:01" },
"online": { "Value":"true", "Time":"2021-05-11 14:41:01" },
"overtemperature": { "Value":"0", "Time":"2021-05-12 12:23:42" },
"pct": { "Value":"36", "Time":"2021-05-12 12:23:42" },
"power": { "Value":"0.00", "Time":"2021-05-12 12:23:42" },
"roller_0_energy": { "Value":"476", "Time":"2021-05-12 12:23:42" },
"roller_0_power": { "Value":"0.00", "Time":"2021-05-12 12:23:42" },
"roller_0_stop_reason": { "Value":"normal", "Time":"2021-05-12 12:23:42" },
"state": { "Value":"36", "Time":"2021-05-12 12:23:42" },
"temperature": { "Value":"60.86", "Time":"2021-05-12 12:23:42" },
"temperature_f": { "Value":"141.55", "Time":"2021-05-12 12:23:42" },
"temperature_status": { "Value":"Normal", "Time":"2021-05-12 12:23:42" },
"x_mqttcom": { "Value":"set announce", "Time":"2021-04-27 20:46:03" }
},
"Attributes": {
"ASC": "2",
"ASC_Pos_Reading": "pct",
"ASC_Time_Up_Early": "08:15",
"ASC_Up": "time",
"IODev": "pietMQTT2",
"appOptions": "{ \"template\": \"shutter\"}",
"cmdIcon": "open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50",
"comment": "Shelly 2.5 in Roller-Mode. 100=opened / 0=closed",
"devStateIcon": ".*/open:fts_shutter_up@red .*/close:fts_shutter_down@red true:10px-kreis-gruen false:10px-kreis-rot 0/stop:fts_shutter_100 100/stop:fts_shutter_10 9\u005cd/stop:fts_shutter_10 8\u005cd/stop:fts_shutter_20 7\u005cd/stop:fts_shutter_30 6\u005cd/stop:fts_shutter_40 5\u005cd/stop:fts_shutter_50 4\u005cd/stop:fts_shutter_60 3\u005cd/stop:fts_shutter_70 2\u005cd/stop:fts_shutter_80 1\u005cd/stop:fts_shutter_90 0\u005cd/stop:fts_shutter_100 set_.*:fts_shutter_updown",
"event-on-change-reading": "ASC_.*,pct",
"eventMap": "open:opens close:closes",
"genericDeviceType": "blind",
"model": "shelly25_roller_invert_0",
"readingList": "shellies/shellyswitch25-E8DB84AA1A65/roller/0/pos:.* pct\n shellies/shellyswitch25-E8DB84AA1A65/status/0/rollers:.* power\n shellies/shellyswitch25-E8DB84AA1A65/online:.* online\n shellies/shellyswitch25-E8DB84AA1A65/announce:.* { json2nameValue($EVENT) }\n shellies/announce:.* { $EVENT =~ m,..id...shellyswitch25-E8DB84AA1A65...mac.*, ? json2nameValue($EVENT) : return }\n shellies/shellyswitch25-E8DB84AA1A65/roller/0:.* current\n shellies/shellyswitch25-E8DB84AA1A65/roller/0:open {{'state' => 'opening'}}\n shellies/shellyswitch25-E8DB84AA1A65/roller/0:close {{'state' => 'closing'}}\n shellies/shellyswitch25-E8DB84AA1A65/roller/0/pos:.* state\n shellies/shellyswitch25-E8DB84AA1A65/input/1:.* input1\n shellies/shellyswitch25-E8DB84AA1A65/input/0:.* input0\n shellies/shellyswitch25-E8DB84AA1A65/relay/power:.* power\n shellies/shellyswitch25-E8DB84AA1A65/relay/energy:.* energy\n shellies/shellyswitch25-E8DB84AA1A65/temperature:.* temperature\n shellies/shellyswitch25-E8DB84AA1A65/overtemperature:.* overtemperature\n shellies/shellyswitch25-E8DB84AA1A65/roller/0/power:.* roller_0_power\n shellies/shellyswitch25-E8DB84AA1A65/roller/0/energy:.* roller_0_energy\n shellies/shellyswitch25-E8DB84AA1A65/temperature_f:.* temperature_f\nshellyswitch25_E8DB84AA1A65:shellies/shellyswitch25-E8DB84AA1A65/info:.* { json2nameValue($EVENT, 'info_', $JSONMAP) }\nshellyswitch25_E8DB84AA1A65:shellies/shellyswitch25-E8DB84AA1A65/roller/0/stop_reason:.* roller_0_stop_reason\nshellyswitch25_E8DB84AA1A65:shellies/shellyswitch25-E8DB84AA1A65/temperature_status:.* temperature_status",
"room": "Buero,MQTT2_DEVICE",
"setList": "open:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command open\n close:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command close\n half:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command/pos 50\n stop:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command stop\n pct:slider,0,1,100 shellies/shellyswitch25-E8DB84AA1A65/roller/0/command/pos $EVTPART1\n x_recalibration:noArg shellies/shellyswitch25-E8DB84AA1A65/roller/0/command rc\n x_update:noArg shellies/shellyswitch25-E8DB84AA1A65/command update_fw\n x_mqttcom shellies/shellyswitch25-E8DB84AA1A65/command $EVTPART1",
"setStateList": "open close half stop pct",
"stateFormat": "<a href=\"http://ip\" target=\"_blank\">\nonline\n</a>\nstate/current",
"userattr": "ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate",
"webCmd": ":open:close:half:stop:pct"
}
},
vielen Dank und viele Grüße
Pit
Ich denke mit dem Reading
current sollte das Problem gut zu lösen sein. Probiere mal bitte folgendes im main-Teil
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["current:stop:close","current::stop"],
"text": ["state:opening:öffnet...","state:closing:schließt...","pct:100:offen","pct:1:%s %","pct:0:geschlossen"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["current:stop:open","current::stop"],
}
]
Wir schauen also im Reading
current ob der Aktor den Motor der Jalousie gerade ansteuert. Wenn das Reading den Wert "stop" hat dann bewirkt der Tastendruck, dass die Jalousie geöffnet bzw. bei der anderen Taste geschlossen wird. Wenn das Reading
current irgend einen anderen Wert als "stop" hat, dann löst der Tastendruck "stop" aus. Den "longclick" und "longrelease" habe ich fürs erste Mal rausgenommen. Diese können wir konfigurieren, wenn das so klappt. :)
Hallo Jemu75,
vielen Dank für deine Hilfe so kurz vor Vatertag....und sorry für den Aufwand.
Leider ist das Verhalten des Rollo unverändert.
VG
Pit
Zitat von: piet_pit am 12 Mai 2021, 15:26:22
Hallo Jemu75,
vielen Dank für deine Hilfe so kurz vor Vatertag....und sorry für den Aufwand.
Leider ist das Verhalten des Rollo unverändert.
VG
Pit
Dann scheint current seinen Wert nicht zu verändern. Du schreibst ja, dass der Motor kurz stoppt und danach gleich wieder anfährt. Das sieht also so aus, als ob der Befehl "close" bzw. "open" erneut gesendet wird. Ich denke es würde Sinn machen, die Veränderung der Readings von dem Shelly 2.5 mal genau zu beobachten. So findet man vielleicht am schnellsten das Reading, welches den aktuellen Motorstatus repräsentiert.
PS.: meine Vermutung kannst du übrigens gern mal prüfen, indem du den debugMode von
FHEMApp aktivierst und dann mal in das syslog schaust.
Hallo Jens,
ich kann ja in Templates Connected-Devices schalten, indem ich ein Kommando "set ...." angebe. Sprich ich muss hier das set explizit angeben.
Kann ich das in normalen Devices auch? Ein (Macro-)Notify zum Beispiel müsste ich per trigger auslösen, bräuchte also beim jeweiligen Notify-Device statt des (impliziten) set ein trigger-Kommando.
Kann ich sowas machen?
Falls nicht, würde ich mir eben alternativ ein Dummy-Device erzeugen und das Notify-Device per Connected einbinden und dann über "trigger Connected....." auslösen. (Wahrscheinlich würde ich das auch nicht, sondern den Dummy schalten und das notify als echtes notify für den Dummy verwenden ;D )
gb#
Zitat von: Benni am 13 Mai 2021, 22:52:46
Hallo Jens,
ich kann ja in Templates Connected-Devices schalten, indem ich ein Kommando "set ...." angebe. Sprich ich muss hier das set explizit angeben.
Kann ich das in normalen Devices auch? Ein (Macro-)Notify zum Beispiel müsste ich per trigger auslösen, bräuchte also beim jeweiligen Notify-Device statt des (impliziten) set ein trigger-Kommando.
Kann ich sowas machen?
Falls nicht, würde ich mir eben alternativ ein Dummy-Device erzeugen und das Notify-Device per Connected einbinden und dann über "trigger Connected....." auslösen. (Wahrscheinlich würde ich das auch nicht, sondern den Dummy schalten und das notify als echtes notify für den Dummy verwenden ;D )
gb#
Sachen gibt's. Ich sollte mich langsam mal mit FHEM beschäftigen... ;D ;D
Probiere das einfach mal aus. Falls es nicht geht, kann ich den "Baustein" der die FHEM Kommando's zusammen setzt gern dahingehend anpassen.
Hi Jens,
nur für den Fall dass du den fhem command Baustein anfasst, kannst Du evtl drüber nachdenken auch Perl-code {} mit einzubauen. .....ich habs im Moment auch über einen zusätzlichen dummy gelöst, ist daher kein Problem und auch kein Featurewunsch meinerseits. Nur informativ.
Zitat von: Jamo am 14 Mai 2021, 09:16:44
Hi Jens,
nur für den Fall dass du den fhem command Baustein anfasst, kannst Du evtl drüber nachdenken auch Perl-code {} mit einzubauen. .....ich habs im Moment auch über einen zusätzlichen dummy gelöst, ist daher kein Problem und auch kein Featurewunsch meinerseits. Nur informativ.
Ich denke Perl sollte besser in FHEM bleiben ;)
gb#
Guten Morgen,
Template funktioniert auf Anhieb. Habe beim FHEM-Device lediglich unter app-options "{ "template": "cam", "setup": { "source": "<stream_url>" } }" eingetragen. Wie bekomme ich das Template jetzt auf den Homebildschirm?
Gruß
Marco
Hallo Marco,
home: true ist dein Freund. Also:
{ "template": "cam", "name": "Kamera", "home": true, "setup": { ...
Schau auch mal in die Doku unter https://github.com/jemu75/fhemApp#readme.
Super, das klappt.
Nun zur Folgefrage: Habe meinen Homescreen angehängt, kann man das linke Panel "Sicherheit" nach rechts schieben?
Gruß
Marco
Hallo Marco,
sortby: n ist dein Freund. Das muss dann aber für alle anderen Templates auch einfügt werden, es sei denn das sortby gibts schon im FHEM device und wird direkt aus dem FHEM device übernommen/genommen. Also:
Code: [Auswählen]
{ "template": "cam", "name": "Kamera", "home": true, "sortby": 10, "setup": { ...
Schau auch mal in die Doku unter https://github.com/jemu75/fhemApp#readme.
EDIT:
Du möchtest wahrscheinlich später noch die Breite deiner Panels 'Komfort' und 'Sicherheit' anpassen, sieht ja grauselig aus, das ist Platzverschwendung. Bei mir gehts cross-Platform mit
"size": "col-12 col-sm-6 col-md-4 col-lg-4", ...
Jens hat viel Aufwand spendiert und die Doku excellent ausgearbeitet, ist dort auch alles bestens beschrieben.
Passt. Vielen Dank ;D
Zitat von: Jamo am 17 Mai 2021, 08:11:31
Hallo Marco,
sortby: n ist dein Freund. Das muss dann aber für alle anderen Templates auch einfügt werden, es sei denn das sortby gibts schon im FHEM device und wird direkt aus dem FHEM device übernommen/genommen. Also:
Code: [Auswählen]
{ "template": "cam", "name": "Kamera", "home": true, "sortby": 10, "setup": { ...
Schau auch mal in die Doku unter https://github.com/jemu75/fhemApp#readme.
EDIT:
Du möchtest wahrscheinlich später noch die Breite deiner Panels 'Komfort' und 'Sicherheit' anpassen, sieht ja grauselig aus, das ist Platzverschwendung. Bei mir gehts cross-Platform mit
"size": "col-12 col-sm-6 col-md-4 col-lg-4", ...
Jens hat viel Aufwand spendiert und die Doku excellent ausgearbeitet, ist dort auch alles bestens beschrieben.
Sensationell erklärt. Danke Dir jamo! :D
Hallo,
Kurze frage kann ich das Kamera Template auch missbrauchen um eine Grafana URL anzeigen zu lassen ?
so etwas wie: http://xxx.yyy.zzz.ooo/d/i3OkCRiMk/photovoltaik-ubersicht?viewPanel=2&orgId=1&from=now%2Fd&to=now
Das klappt bei mir nicht, vielleicht ist die Lösung das es damit nicht funktioniert, gibt es da schon was ?!
Grüße
Zitat von: Pusemukel am 19 Mai 2021, 11:52:23
Hallo,
Kurze frage kann ich das Kamera Template auch missbrauchen um eine Grafana URL anzeigen zu lassen ?
so etwas wie: http://xxx.yyy.zzz.ooo/d/i3OkCRiMk/photovoltaik-ubersicht?viewPanel=2&orgId=1&from=now%2Fd&to=now
Das klappt bei mir nicht, vielleicht ist die Lösung das es damit nicht funktioniert, gibt es da schon was ?!
Grüße
Hi,
das Template setzt die URL, die über den Parameter
source definiert wird, in einen HTML <img>Tag.
Wenn grafana eine Grafik bzw. cgi zurück liefert, dann könnte das klappen. Alternativ gern mal das Chart-Template anschauen. Das ist optimal auf das Design der App ausgerichtet. :)
Das Cam-Template funktioniert wunderbar, auf dem PC wird das Kamera-Bild einwandfrei angezeigt. Auf dem Handy / Tablett erkennt man nur einen Pixel, der das Kamerabild darstellt. Woran liegt das?
Zitat von: marboj am 19 Mai 2021, 12:41:11
Das Cam-Template funktioniert wunderbar, auf dem PC wird das Kamera-Bild einwandfrei angezeigt. Auf dem Handy / Tablett erkennt man nur einen Pixel, der das Kamerabild darstellt. Woran liegt das?
Kann ich so noch nicht einschätzen. Was genau meinst du mit Pixel?
schwierig zu beschreiben, deswegen ein Screenshot vom Handy...
Zitat von: marboj am 20 Mai 2021, 06:59:20
schwierig zu beschreiben, deswegen ein Screenshot vom Handy...
Niemand eine Idee?
Nein eine Idee habe ich auch nicht, aber es sieht so aus als hätte dein Handy keinen Zugriff auf das Bild, aus irgendeinem Grund. Irgendwas mit Netzwerk? GastNetz / Wlan? HTTPS?
Der PC haengt ja am Kabel - keine Ahnung.
Zitat von: marboj am 20 Mai 2021, 06:59:20
schwierig zu beschreiben, deswegen ein Screenshot vom Handy...
Sorry, bin aktuell recht straff eingebunden. Da klappt es nicht immer gleich mit einer Antwort.
Wenn du dieses Bild siehst, dann heißt das, dass dein Bildlink nicht funktioniert. Du kannst den Link prüfen, indem du die URL mal separat in einem anderen Browserfenster aufrufst. Wichtig ist, dass es sich um einen Bildlink handeln muss. (jpg, mjpg, cgi) :)
das ist ja merkwürdig. Wenn ich die URL im Browser auf dem Handy eingebe, wird das Bild angezeigt. Auf dem Handy geht es nicht.
{ "template": "cam", "name": "Carport", "home": true, "setup": { "source": "http://xxxxx:xxxxx@192.xxx.xxx.xx/mjpeg/snap.cgi?chn=0" } }
Zitat von: marboj am 20 Mai 2021, 21:48:59
das ist ja merkwürdig. Wenn ich die URL im Browser auf dem Handy eingebe, wird das Bild angezeigt. Auf dem Handy geht es nicht.
{ "template": "cam", "name": "Carport", "home": true, "setup": { "source": "http://xxxxx:xxxxx@192.xxx.xxx.xx/mjpeg/snap.cgi?chn=0" } }
Die Übergabe von Benutzer und Passwort in einem Link wird blockiert. Das funktioniert tatsächlich nur in der Eingabezeile des Browsers. Ist ja im Grunde auch sehr unsicher solche Daten permanent in einen Link zu packen. Da kannst du den Passwortschutz an der Camera auch rausnehmen. Wenn du bei Google mal suchst, findest du einiges zu dem Thema. 8)
ok, aber earum geht es am PC ???
Zitat von: marboj am 20 Mai 2021, 22:20:14
ok, aber earum geht es am PC ???
Vielleicht hast du am PC einen anderen Browser im Einsatz?
Hallo,
erst mal vorweg: Das klappt ja super, vielen Dank jemu75.
Ich würde gerne einen Knopf basteln, der mir eine Aktion deaktiviert.
Wenn ich z.B. nicht möchte, dass mein Rolladen zu einer bestimmten Zeit nicht herunterfährt, weil ich noch draußen sitze.
Bisher habe ich dann über das WI "set" und dann auf "inactive" gewechselt.
Kann ich dafür nicht einfach einen Schalter/Knopf erstellen, der genau diese Funktion ermöglicht?
Grüße
Mandel
Zitat von: MandelHL am 26 Mai 2021, 23:22:04
Hallo,
erst mal vorweg: Das klappt ja super, vielen Dank jemu75.
Ich würde gerne einen Knopf basteln, der mir eine Aktion deaktiviert.
Wenn ich z.B. nicht möchte, dass mein Rolladen zu einer bestimmten Zeit nicht herunterfährt, weil ich noch draußen sitze.
Bisher habe ich dann über das WI "set" und dann auf "inactive" gewechselt.
Kann ich dafür nicht einfach einen Schalter/Knopf erstellen, der genau diese Funktion ermöglicht?
Grüße
Mandel
Magst du nicht endlich mal die Doku (https://github.com/jemu75/fhemApp#readme) lesen und dir die darin enthaltenen Beispiele anschauen?
Ich nehme an, du steuerst das mit einem device vom Type "at" oder "DOIF". Das Device ist ein Device, wie jedes andere auch und kann entsprechend mit einem appOptions-Attribut für fhemapp konfiguriert werden. Ich könnte dafür das Template "switch" nehmen und statt "on" ein "active" senden und statt des "off" ein "inactive" und schon hast du was du möchtest.
Ich habe genau sowas bei mir an jedem (!) notify, watchdog und at (https://forum.fhem.de/index.php/topic,120913.msg1147070.html#msg1147070)
(doif habe ich nicht in Verwendung!)
gb#
Danke Benni und sorry, ich hatte mich gestern schon intensiver mit der Doku beschäftigt und einige Einstellungen vorgenommen. Das hat auch super geklappt.
Der Hinweis mit dem Einstellen auf "active" und "inactive" statt "DOIF" ist klasse. Ich hatte das in meinem FHEM bisher komplizierter geregelt und werde es auch da ändern.
Habe mich aber tatsächlich schon gut durchgearbeitet.
EDIT:
Ich habe mir Deinen Thread #615 "https://forum.fhem.de/index.php/topic,120913.615.html (https://forum.fhem.de/index.php/topic,120913.615.html)" durchgelesen und auch meine 99_myUtils.pm um
Notify
sub newNotify_appOptions {
my $deviceName=shift;
Log3 'global',3,"newNotify_appOptions: $deviceName";
my $attrCmd="attr $deviceName appOptions ". << 'END_VAL';
{
"panel": {
"status": [
"state:inactive:deaktiviert:0:success",
"state::aktiv:100:success"
],
"btn": [
"state:inactive:mdi-toggle-switch-off",
"state::mdi-toggle-switch"
],
"click": [
"state:inactive:active",
"state::inactive"
]
}
}
END_VAL
fhem $attrCmd;
}
und
at
sub newAt_appOptions {
my $deviceName=shift;
Log3 'global',3,"newAt_appOptions: $deviceName";
my $attrCmd="attr $deviceName appOptions ". << 'END_VAL';
{
"panel": {
"status": [
"state:inactive:deaktiviert:0:success",
"state::%s:100:success"
],
"btn": [
"state:inactive:mdi-toggle-switch-off",
"state::mdi-toggle-switch"
],
"click": [
"state:inactive:active",
"state::inactive"
]
}
}
END_VAL
fhem $attrCmd;
}
ergänzt.
Aber nun hänge ich leider hier:
defmod fhemapp_global.defined notify global.DEFINED.* {\
my $newType=$defs{$EVTPART1}->{TYPE};;\
Log3 'global',3,"global.DEFINED new $newType: $EVTPART1";;\
\
if ($newType =~/\b(notify)\b/) {\
newNotify_appOptions($EVTPART1);;\
}\
if ($newType =~/\b(at)\b/) {\
newAt_appOptions($EVTPART1);;\
}\
}
Wo muss ich das denn eintragen? Bitte entschuldige, dass ich hier jetzt auch noch mal frage, aber ich stehe doch noch recht am Anfang.
Und dann bin ich dabei, den Switch etwas umzubauen, weil ich ja nur "aktiv" und "inaktiv" brauche.
Hier steckt ja noch viel mehr dahinter. Außerdem weiß ich nicht, wohin mit der Konfiguration, gehe aber davon aus, dass das gleich im Anschluss an ,,{ ,,Template": ,,switch"}," kommt:
{
"name": "switch",
"author": "jemu75",
"date": "2021-03-21",
"status": {
"bar": ["state:on:100:success","state:off:0:success"],
"error": ["Connected.receiver.Readings.Activity.Value:^(?!alive):100:error:keine Verbindung"]
},
"main": [
{
"leftBtn": "mdi-power-off",
"leftClick": ["state::off"],
"text": ["state:on:an","state:off:aus","state::%s"],
"rightBtn": "mdi-power-on",
"rightClick": ["state::on"]
}
],
"info": {
"left1": ["state:on::mdi-power-plug","state:off::mdi-power-plug-off"],
"left2": ["power:0.1:%n.2w"],
"right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]
}
}
Tut mir leid, ich habe dazu echt nichts gefunden.
Ich glaube, das da oben war ziemlicher Quatsch. Das muss ich nirgendwo einfügen.
Das ist die Konfiguration, die sich hinter ,,templates": ,,switch" verbirgt.
Das muss ich jetzt mit ,,setup" entsprechend anpassen.
Klappt noch nicht, aber ich taste mich ran.
Allerdings weiß ich mit ,,fhemapp_global.defined" tatsächlich nichts anzufangen. Wo muss das hin?
Danke.
Thx
Mandel
Zitat von: MandelHL am 27 Mai 2021, 10:26:28
Ich glaube, das da oben war ziemlicher Quatsch. Das muss ich nirgendwo einfügen.
Das ist die Konfiguration, die sich hinter ,,templates": ,,switch" verbirgt.
Das muss ich jetzt mit ,,setup" entsprechend anpassen.
Klappt noch nicht, aber ich taste mich ran.
Allerdings weiß ich mit ,,fhemapp_global.defined" tatsächlich nichts anzufangen. Wo muss das hin?
Vergiss mal den ganzen Kram, das ist erst die Kür, du solltest mal mit dem Pflichtteil anfangen.
Wenn du in einem beliebigen notify oder at folgendes in appOptions einträgst, erscheint es auf dem Home-Screen von fhemapp und kann damit aktivert und deaktiviert werden:
{
"template": "switch",
"home": true,
"sortby": "1",
"setup": {
"status":
{
"bar": [
"state:inactive:0:success",
"state:active:100:success"
]
},
"main":
[{
"leftBtn": "mdi-power-off" ,
"leftClick": ["state::inactive"],
"text":
[
"state:inactive:deaktiviert" ,
"state:active:aktiviert" ,
"state::%s"
],
"rightBtn": "mdi-power-on" ,
"rightClick": ["state::active"]
}]
}
}
Ich habe mich hoffentlich auf die Schnelle nicht irgendwo vertippt!
gb#
Danke, Benni. Das hat natürlich auf Anhieb funktioniert.
Ich hatte es mit
{ "template": "switch", "setup": { "status": {"bar": ["state:active:100:success","state:inactive:0:success"],
"error": ["Connected.receiver.Readings.Activity.Value:^(?!alive):100:error:keine Verbindung"]
},}, "main": [{
"leftBtn": "mdi-power-inactive",
"leftClick": ["state::inactive"],
"text": ["state:active:aktiviert","state:inactive:deaktiviert","state::%s"],
"rightBtn": "mdi-power-active",
"rightClick": ["state::active"]
}], "info": {"left1": ["state:active::mdi-power-plug","state:inactive::mdi-power-plug-inactive"],
"left2": ["power:0.1:%n.2w"],
"right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]} } }
probiert und hatte mich dabei an der Doku orientiert.
Aber so wie Du es gepostet hast, entspricht es genau dem, was ich brauchte.
Das werde ich auch anderweitig einsetzen.
Danke,
Mandel
Zitat von: MandelHL am 27 Mai 2021, 22:39:51
Danke, Benni. Das hat natürlich auf Anhieb funktioniert.
Ich hatte es mit
{ "template": "switch", "setup": { "status": {"bar": ["state:active:100:success","state:inactive:0:success"],
"error": ["Connected.receiver.Readings.Activity.Value:^(?!alive):100:error:keine Verbindung"]
},}, "main": [{
"leftBtn": "mdi-power-inactive",
"leftClick": ["state::inactive"],
"text": ["state:active:aktiviert","state:inactive:deaktiviert","state::%s"],
"rightBtn": "mdi-power-active",
"rightClick": ["state::active"]
}], "info": {"left1": ["state:active::mdi-power-plug","state:inactive::mdi-power-plug-inactive"],
"left2": ["power:0.1:%n.2w"],
"right2": ["Connected.receiver.Readings.Activity.Value:alive::mdi-wifi","Connected.receiver.Readings.Activity.Value:::mdi-wifi-off"]} } }
probiert und hatte mich dabei an der Doku orientiert.
Aber so wie Du es gepostet hast, entspricht es genau dem, was ich brauchte.
Freut mich, dass es so für dich funktioniert!
Noch ein Tip: JSON ist recht empfindlich. Um einen JSON-Block auf grundsätzliche syntaktische Richtigkeit zu prüfen, kann man auf entsprechende Online-Tools zurückgreifen (Bspw.: https://jsonformatter.curiousconcept.com/#). Wenn du dort deinen Versuch prüfen lässt, bekommst du die Fehler recht gut angezeigt!
Du warst im Prinzip schon auf dem richtigen Weg! ;)
gb#
Hallo!
Ist es eigentlich auch möglich nur eine Teilkonfiguration z.B. bei einem Switch zu verändern?
Hintergrund: Ich möchte bei einem Switch einen Timer mit einbauen. Also nur das Set-Kommando auf "set on-for-timer 300" setzen.
ich könnte mir dazu "einfach" ein Template erstellen. Würde es jedoch auch komfortabel finden, wenn ich z.B.:
{ "template": "switch","home": true,"dashboard": true,"setup": { "main": [{"leftClick": ["reading:value:set_param"]}]}}
nur einzelne Einstellungen überschreiben könnte. In meinem Beispiel wird mir nur noch ein leerer Button angezeigt...
Habe ich in der Doku etwas übersehen?
Gruß
Bismosa
Zitat von: bismosa am 01 Juni 2021, 21:19:14
Hallo!
Ist es eigentlich auch möglich nur eine Teilkonfiguration z.B. bei einem Switch zu verändern?
Hintergrund: Ich möchte bei einem Switch einen Timer mit einbauen. Also nur das Set-Kommando auf "set on-for-timer 300" setzen.
ich könnte mir dazu "einfach" ein Template erstellen. Würde es jedoch auch komfortabel finden, wenn ich z.B.:
{ "template": "switch","home": true,"dashboard": true,"setup": { "main": [{"leftClick": ["reading:value:set_param"]}]}}
nur einzelne Einstellungen überschreiben könnte. In meinem Beispiel wird mir nur noch ein leerer Button angezeigt...
Habe ich in der Doku etwas übersehen?
Gruß
Bismosa
Ich denke das sollte funktionieren, habe es selbst aber noch nicht ausprobiert. Dein Beispiel sieht soweit gut aus. Einzig die Definition hinter "leftClick" passt m.M. nach noch nicht.
Hier müsste z.B. "state::on-for-timer 300" rein. Probiere das bitte mal aus und melde dich, falls es nicht klappt. :)
Zitat von: jemu75 am 20 Mai 2021, 22:27:16
Vielleicht hast du am PC einen anderen Browser im Einsatz?
Falls jemand das gleiche Problem hat: Mit dem Firefox, sowohl auf dem Handy als auch am PC wird das Bild angezeigt. Mit Chrome oder Edge nicht...
Hallo,
Zitat von: jemu75 am 01 Juni 2021, 21:30:23
Ich denke das sollte funktionieren, habe es selbst aber noch nicht ausprobiert. Dein Beispiel sieht soweit gut aus. Einzig die Definition hinter "leftClick" passt m.M. nach noch nicht.
Hier müsste z.B. "state::on-for-timer 300" rein. Probiere das bitte mal aus und melde dich, falls es nicht klappt. :)
Funktioniert leider nicht. Der Steuerteil fehlt dann komplett. Siehe Anhang.
Vielleicht ist dies dann ja eher ein Feature-request :) Ist auch nicht eilig
Gruß
Bismosa
Zitat von: bismosa am 02 Juni 2021, 07:45:46
Hallo,
Funktioniert leider nicht. Der Steuerteil fehlt dann komplett. Siehe Anhang.
Vielleicht ist dies dann ja eher ein Feature-request :) Ist auch nicht eilig
Gruß
Bismosa
Ja, jetzt verstehe ich, weshalb du nichts siehst. Der "main-Teil" bzw. die Ebene im "main-Teil" muss komplett definiert werden. D.h. du musst neben "leftClick" mindestens noch "leftBtn" in
appOptions definieren, damit die Taste angezeigt wird. Ebenso müsstest du die anderen Elemente wie z.B. "text" definieren, wenn noch ein Text angezeigt werden soll.
Wenn du nur ein ganz bestimmtes Device etwas anpassen möchtest, dann ist der Weg über
appOptions sinnvoll. Wenn die Anpassung umfangreicher ist oder diese für mehrere Devices nötig sind, dann empfehle ich die Erstellung eines separaten Templates.
Beste Grüße
Jens :)
Hallo,
bin leider erst jetzt wieder dazu gekommen. Ich habe mir einfach ein eigenes Template erstellt. :)
Ich würde es toll finden, wenn man einzelne Funktionen "überschreiben" könnte. Dann muss man da nicht alles wiederholen. Z.b. könnte ich dann auch das Template für meine Rollläden direkt verwenden.
Aber ich verstehe auch, dass eigene Templates u.U. sinnvoller sein können. Dann wird bei einem Update der integrierten Templates nichts verändert.
Danke!
Gruß
Bismosa
Zitat von: bismosa am 08 Juni 2021, 17:35:47
Ich würde es toll finden, wenn man einzelne Funktionen "überschreiben" könnte. Dann muss man da nicht alles wiederholen. Z.b. könnte ich dann auch das Template für meine Rollläden direkt verwenden.
Hallo bimosa,
das geht doch. Im deinem Fhem Device kannst du mit appOptions in der Rubrik setup Teile des Template ,,überschreiben".
Siehe in der Doku unter
Standard Templates anpassen.
Gruß LuGu
Zitat von: LuGu am 08 Juni 2021, 19:05:43
das geht doch. Im deinem Fhem Device kannst du mit appOptions in der Rubrik setup Teile des Template ,,überschreiben".
Siehe in der Doku unter Standard Templates anpassen.
Die Antwort von Jens hast du anscheinend überlesen? ;)
Zitat von: jemu75 am 02 Juni 2021, 12:39:50
Der "main-Teil" bzw. die Ebene im "main-Teil" muss komplett definiert werden. D.h. du musst neben "leftClick" mindestens noch "leftBtn" in appOptions definieren, damit die Taste angezeigt wird. Ebenso müsstest du die anderen Elemente wie z.B. "text" definieren, wenn noch ein Text angezeigt werden soll.
gb#
Hallo!
Zitat von: jemu75 am 02 Juni 2021, 12:39:50
Der "main-Teil" bzw. die Ebene im "main-Teil" muss komplett definiert werden. D.h. du musst neben "leftClick" mindestens noch "leftBtn" in appOptions definieren, damit die Taste angezeigt wird. Ebenso müsstest du die anderen Elemente wie z.B. "text" definieren, wenn noch ein Text angezeigt werden soll.
Ja. Genau das meinte ich. Überschreiben im Main-Teil ohne alles zu wiederholen :)
Gruß
Bismosa
Zitat von: bismosa am 09 Juni 2021, 09:20:27
Hallo!
Ja. Genau das meinte ich. Überschreiben im Main-Teil ohne alles zu wiederholen :)
Nein! Du kannst
nicht nur Teile des Main-Teiles, bzw. einer Main-Ebene überschreiben, sondern wenn, dann musst du die
komplette Main-Ebene überschreiben
Eventuell besteht hier auch nur eine mißverständliche Benutzung von "Teile überschreiben"?
gb#
Hallo,
ich habe meine Wetterstation HM-WDS100-C6-O-2 in FHEMapp eingebunden, allerdings nur mit dem Template "temperature".
Die Station bietet ja aber noch mehr als Temperatur und Luftfeuchtigkeit.
Hat jemand eine Idee, wie auch die anderen Messungen dargestellt werden können oder hat vielleicht schon etwas programmiert?
Danke und viele Grüße
Mandel
Zitat von: MandelHL am 18 Juni 2021, 22:01:32
Hallo,
ich habe meine Wetterstation HM-WDS100-C6-O-2 in FHEMapp eingebunden, allerdings nur mit dem Template "temperature".
Die Station bietet ja aber noch mehr als Temperatur und Luftfeuchtigkeit.
Hat jemand eine Idee, wie auch die anderen Messungen dargestellt werden können oder hat vielleicht schon etwas programmiert?
Danke und viele Grüße
Mandel
Hallo,
Welche Werte würdest du gern anzeigen?
Schicke gern mal ein list von der Wetterstation und die Readings, die du anzeigen möchtest.
Beste Grüße
Jens :)
Moin Jens,
hier das List, das wahrscheinlich so ausreicht, oder?
Internals:
DEF 6808C9
FUUID 60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
HMLANGW_MSGCNT 907
HMLANGW_RAWMSG 0500003CBD86706808C900000000CE5B001DC0301761CF
HMLANGW_RSSI -60
HMLANGW_TIME 2021-06-20 09:35:15
IODev HMLANGW
LASTInputDev HMLANGW
MSGCNT 907
NAME Wetterstation
NOTIFYDEV global
NR 88
STATE Temperatur: 20.6 °C, Feuchtigkeit: 91 %, Helligkeit: 207, Regen: 8.555 mm/qm, Wind: 4.8 km/h, Richtung: ESE; ⬉
TYPE CUL_HM
Es wäre schon schön, wenn all die Werte angezeigt werden könnten.
Ich weiß nicht, ob es eine Möglichkeit gibt, die Windgeschwindigkeit zusätzlich in Windstärke, also bft, anzeigen zu lassen.
Aber dafür ist das dann wohl hier der falsche Thread.
Danke Dir, dass Du Dich der Sache annimmst.
VG
Mandel
Zitat von: MandelHL am 20 Juni 2021, 09:39:54
hier das List, das wahrscheinlich so ausreicht, oder?
Hallo Mandel,
ich glaube nicht, dass das reicht! Der interessante Part wären die Readings gewesen!
Hier mal ein list von meinem:
Internals:
DEF 1FCxxx
FUUID 5c4a04db-f33f-b8e7-e423-544358c3dfb19fed
IODev HMUART3
LASTInputDev HMUART1
NAME HG.XX.WS.Wetter
NOTIFYDEV global
NR 187
NTFY_ORDER 50-HG.XX.WS.Wetter
STATE T: 24.2 H: 64 B: 80 sun: 207
TYPE CUL_HM
chanNo 01
peerList Wetterstation
protLastRcv 2021-06-20 09:56:26
protRcv 4945 last_at:2021-06-20 09:56:26
protResnd 3 last_at:2021-06-11 16:51:32
protSnd 8 last_at:2021-06-11 16:53:55
protState CMDs_done
READINGS:
2021-06-11 16:19:39 Activity alive
2021-06-11 16:53:54 CommandAccepted yes
from archivexx D-firmware 1.4
from archivexx D-serialNr KEQ024xxx
2021-06-11 16:53:54 PairedTo 0x23Axxx
2021-06-11 16:53:54 RegL_00. 00:00 01:00 02:01 05:00 0A:23 0B:A8 0C:13
2021-06-11 16:53:55 RegL_01. 00:00 05:1E
2021-06-11 16:53:55 RegL_01.Wetterstation_chn-FF 00:00 06:19 07:05
2021-06-20 09:56:26 brightness 80
2021-06-11 16:53:55 cfgState PeerVerf
2021-06-11 16:53:55 commState CMDs_done
2021-06-20 09:56:26 dewpoint 17.0
2021-06-20 09:44:07 hmRain 1
2021-06-20 09:56:26 humidity 64
2021-06-20 09:56:26 isRaining 0
2021-06-11 16:53:54 peerList Wetterstation
2020-05-24 07:57:51 powerOn 2020-05-24 07:57:51
2021-06-20 09:56:26 rain 869.365
2020-05-24 07:57:51 recentStateType info
2021-06-20 09:56:26 state T: 24.2 H: 64 W: 0 R: 869.365 IR: 0 WD: 40 WDR: 67.5 S: 207 B: 80
2021-05-25 23:16:31 storm quiet
2021-06-20 09:56:26 sunshine 207
2021-06-20 09:56:26 temperature 24.2
2018-09-23 19:29:42 trig_09 Wetterstation
2021-05-25 23:16:31 trig_3F Wetterstation
2021-05-25 23:16:31 trigger_cnt 152
2020-05-24 07:57:51 unknown 06000000
2021-06-20 09:56:26 windDirRange 67.5
2021-06-20 09:56:26 windDirection 40
2021-06-20 09:56:26 windSpeed 0
Attributes:
IODev HMUART1
IOgrp ccu
actCycle 000:10
actStatus alive
alias Wettersensor
autoReadReg 5_readMissing
event-on-change-reading .*
event-on-update-reading brightness,humidity,temperature
expert defReg,allReg,rawReg,templ
firmware 1.4
group Wetter
model HM-WDS100-C6-O
peerIDs 00000000,373xxxxx
room Umwelt
serialNr KEQ024xxxx
stateFormat T: temperature H: humidity B: brightness sun: sunshine
subType THSensor
Ich habe mal alles was expert-Daten, userreadings und Readings von anderen Devices (rain / statistics) sind rausgenommen.
Kannst aber gerne mal dein List noch dazu-posten.
gb#
Danke, Benni.
Hier mal das komplette List:
Internals:
DEF 6808C9
FUUID 60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
HMLANGW_MSGCNT 1009
HMLANGW_RAWMSG 050000382386706808C900000001013F001DC0A93BF8EC
HMLANGW_RSSI -56
HMLANGW_TIME 2021-06-20 13:54:38
IODev HMLANGW
LASTInputDev HMLANGW
MSGCNT 1009
NAME Wetterstation
NOTIFYDEV global
NR 88
STATE Temperatur: 25.7 °C, Feuchtigkeit: 63 %, Helligkeit: 236, Regen: 8.555 mm/qm, Wind: 16.9 km/h, Richtung: WNW; ⬊
TYPE CUL_HM
chanNo 01
lastMsg No:23 - t:70 s:6808C9 d:000000 01013F001DC0A93BF8EC
protCmdPend 3 CMDs_pending
protLastRcv 2021-06-20 13:54:38
protRcv 1009 last_at:2021-06-20 13:54:38
protState CMDs_pending
rssi_at_HMLANGW cnt:1009 min:-62 max:-53 avg:-57.89 lst:-56
.attraggr:
.attrminint:
.userReadings:
HASH(0x2b7e898)
HASH(0x2af7d20)
CL:
Authenticated 0
BUF
FD 4
FW_ID 2960
LASTACCESS 1624190200
NAME WEBphone_192.168.178.153_65355
NR 3321
PEER 192.168.178.153
PORT 65355
SNAME WEBphone
SSL
STATE Connected
TEMPORARY 1
TYPE FHEMWEB
canAsyncOutput 1
.attraggr:
.attrminint:
READINGS:
2021-06-20 13:56:40 state Connected
READINGS:
2021-06-06 12:34:49 .D-devInfo 3F0100
2021-06-06 12:34:49 .D-stc 70
2021-06-18 19:11:39 .associatedWith Wetterstation,Wetterstation
2021-06-20 13:54:38 .protLastRcv 20210620135438
2021-06-06 12:34:49 D-firmware 1.6
2021-06-06 12:34:49 D-serialNr PEQ0001456
2021-06-18 19:11:33 IODev HMLANGW
2021-06-07 16:19:47 LuftdruckHpa 0
2021-06-07 16:19:47 RegenGesamtMm 0
2021-06-07 16:19:47 RegenMm 0
2021-06-07 16:19:47 TaupunktTempC -17.8
2021-06-07 16:19:47 TemperaturC -4.1
2021-06-07 16:19:47 TemperaturGefuehltC -17.8
2021-06-07 16:19:47 WindKm 6.8
2021-06-07 16:19:47 WindboeenKm 0.0
2021-06-07 16:19:47 WindrichtungGrad -180
2021-06-20 13:54:38 battery ok
2021-06-20 13:54:38 brightness 236
2021-06-18 19:13:07 cfgState updating
2021-06-18 19:13:07 commState CMDs_pending
2021-06-20 13:54:38 humidity 63
2021-06-20 13:54:38 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-20 13:54:38 rain 8.555
2021-06-06 12:36:20 recentStateType info
2021-06-20 13:54:38 state T: 25.7 H: 63 W: 16.9 R: 8.555 IR: 0 WD: 295 WDR: 67.5 S: 248 B: 236
2021-06-20 13:54:38 sunshine 248
2021-06-20 13:54:38 temperature 25.7
2021-06-06 12:36:20 unknown 06000030
2021-06-20 13:54:38 windDirRange 67.5
2021-06-20 13:54:38 windDirection 295
2021-06-20 13:54:38 windDirectionIcon ⬊
2021-06-20 13:54:38 windDirectionText WNW
2021-06-20 13:54:38 windSpeed 16.9
2021-06-07 08:09:18 winddirText N
cmdStack:
++A00125788A6808C900040000000000
##A00125788A6808C90103
##A00125788A6808C901040000000001
helper:
HM_CMDNR 35
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:1624036299.10761
TmplTs 1624036299.10761
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 1624190078.68733
prefIO
rxt 0
vccu
p:
6808C9
00
00
00
mRssi:
mNo 23
io:
HMLANGW:
-50
-50
peerIDsH:
prt:
bErr 0
sProc 2
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rssi:
at_HMLANGW:
avg -57.8969276511397
cnt 1009
lst -56
max -53
min -62
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: windDirectionText; windDirectionIcon
subType THSensor
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);
}
Statistics finde ich auch noch sehr interessant.
Hast Du Auswertungen, die Du zur Verfügung stellen würdest?
Grüße
Mandel
Hallo, ich habe länger nichts gehört und gesehen, dass es ein neues Release gibt.
Fehlte von meiner Seite noch etwas an Angaben? Oder lässt sich das gar nicht umsetzen?
Schönen Sonntag
Mandel
Hallo mal ein frage.
Ich hab in der Doku gesehen das auch Internals abgefragt werden können, wie funktioniert das !?
Zitat}
Zuweisung von Elementen
Damit ein Element auf den Wert eines bestimmten Readings reagieren kann, muss dies entsprechend definiert werden. Jede Zuweisung enthält mindestens ein reading, einen wert und einen bzw. mehrere Parameter.
reading kann sowohl auf Readings, Attribute als auch Internals eines FHEM-Devices zeigen.
wert kann strings, zahlen oder regexp enthalten. Für Zahlen gilt reading >= wert
parameter betrifft das Element selbst, also z.B. das Icon, den Text oder die Farbe. Hinweis: Die Parameter sind je Element definiert und müssen ein der korrekten Reihenfolge angegeben werden. (siehe verfügbare Elemente)
Einfach statt dem "Reading" das Internal angeben funktioniert nicht
Grüsse
Zitat von: Pusemukel am 10 Juli 2021, 14:35:05
Hallo mal ein frage.
Ich hab in der Doku gesehen das auch Internals abgefragt werden können, wie funktioniert das !?
Einfach statt dem "Reading" das Internal angeben funktioniert nicht
Grüsse
In dem Fall bitte Internals.<Name des Internals> verwenden.
Also z.B. Internals.NAME
Bei Fragen melde dich gern. :)
Hi,
Jap das hat geholfe, danke ;).
Hallo,
FHEMapp gefällt mir sehr gut!
ist wirklich ein tolles Projekt mit Potential...
hab schonmal 1 template angepasst für Enocean mit FAM14 (Dimmer FUD14)
{
"name": "dimmerFAM14",
"author": "stixif",
"date": "2021-06-06",
"status": {
"bar": ["dim::%n:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["dim:10:dim %i-10","dim::off"],
"leftLong": ["state::off"],
"text": ["dim:1:an:","dim::aus"],
"rightBtn": "mdi-plus",
"rightClick": ["dim:90:on","dim::dim %i10"],
"rightLong": ["state::on"]
}
],
"info": {
"left1": ["dim:1::mdi-lightbulb","dim:::mdi-lightbulb-off"],
"left2": ["dim::%s%"]
}
}
aber nun komm ich beim Rolladen nicht weiter (Enocean FSB14)
Device
defmod EnO_EG_FSB14_30 EnOcean 0000001E
attr EnO_EG_FSB14_30 userattr ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate
attr EnO_EG_FSB14_30 ASC 1
attr EnO_EG_FSB14_30 ASC_Antifreeze off
attr EnO_EG_FSB14_30 ASC_Antifreeze_Pos 85
attr EnO_EG_FSB14_30 ASC_AutoAstroModeEvening HORIZON
attr EnO_EG_FSB14_30 ASC_AutoAstroModeEveningHorizon -4
attr EnO_EG_FSB14_30 ASC_AutoAstroModeMorning HORIZON
attr EnO_EG_FSB14_30 ASC_AutoAstroModeMorningHorizon 4
attr EnO_EG_FSB14_30 ASC_BlockingTime_afterManual 1200
attr EnO_EG_FSB14_30 ASC_BlockingTime_beforDayOpen 3600
attr EnO_EG_FSB14_30 ASC_BlockingTime_beforNightClose 3600
attr EnO_EG_FSB14_30 ASC_Closed_Pos 100
attr EnO_EG_FSB14_30 ASC_ComfortOpen_Pos 20
attr EnO_EG_FSB14_30 ASC_Drive_Delay -1
attr EnO_EG_FSB14_30 ASC_Drive_DelayStart -1
attr EnO_EG_FSB14_30 ASC_GuestRoom none
attr EnO_EG_FSB14_30 ASC_LockOut off
attr EnO_EG_FSB14_30 ASC_LockOut_Cmd none
attr EnO_EG_FSB14_30 ASC_Mode_Down always
attr EnO_EG_FSB14_30 ASC_Mode_Up always
attr EnO_EG_FSB14_30 ASC_Open_Pos 0
attr EnO_EG_FSB14_30 ASC_Partymode off
attr EnO_EG_FSB14_30 ASC_Pos_Reading position
attr EnO_EG_FSB14_30 ASC_PrivacyDownValue_beforeNightClose -1
attr EnO_EG_FSB14_30 ASC_PrivacyDown_Pos 50
attr EnO_EG_FSB14_30 ASC_Roommate_Device none
attr EnO_EG_FSB14_30 ASC_Roommate_Reading state
attr EnO_EG_FSB14_30 ASC_Shading_InOutAzimuth 200:280
attr EnO_EG_FSB14_30 ASC_Shading_MinMax_Elevation 15
attr EnO_EG_FSB14_30 ASC_Shading_Min_OutsideTemperature 22
attr EnO_EG_FSB14_30 ASC_Shading_Mode off
attr EnO_EG_FSB14_30 ASC_Shading_Pos 0
attr EnO_EG_FSB14_30 ASC_Shading_StateChange_SunnyCloudy 4500:3300
attr EnO_EG_FSB14_30 ASC_Shading_WaitingPeriod 1200
attr EnO_EG_FSB14_30 ASC_ShuttersPlace window
attr EnO_EG_FSB14_30 ASC_Time_Down_Early 17:00
attr EnO_EG_FSB14_30 ASC_Time_Down_Late 22:30
attr EnO_EG_FSB14_30 ASC_Time_Up_Early 06:30
attr EnO_EG_FSB14_30 ASC_Time_Up_Late 08:00
attr EnO_EG_FSB14_30 ASC_Time_Up_WE_Holiday 09:00
attr EnO_EG_FSB14_30 ASC_Ventilate_Pos 70
attr EnO_EG_FSB14_30 ASC_Ventilate_Window_Open on
attr EnO_EG_FSB14_30 ASC_WiggleValue 5
attr EnO_EG_FSB14_30 ASC_WindowRec none
attr EnO_EG_FSB14_30 ASC_WindowRec_subType twostate
attr EnO_EG_FSB14_30 DbLogExclude .*
attr EnO_EG_FSB14_30 IODev FAM14
attr EnO_EG_FSB14_30 alias Rollo_EG_Büro
attr EnO_EG_FSB14_30 appOptions {\
"template": "shutterFAM14",\
"name": "Büro Rolladen",\
"room": "Büro", \
"group": "Rolladen"\
}
attr EnO_EG_FSB14_30 comMode uniDir
attr EnO_EG_FSB14_30 devStateIcon down:fts_shutter_100 open_ack:fts_window_2w 0:fts_window_2w up:fts_window_2w 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40
attr EnO_EG_FSB14_30 eep A5-3F-7F
attr EnO_EG_FSB14_30 event-on-change-reading .*
attr EnO_EG_FSB14_30 group Rolladen
attr EnO_EG_FSB14_30 manufID 00D
attr EnO_EG_FSB14_30 model Eltako_FSB_ACK
attr EnO_EG_FSB14_30 room EnOcean,Erdgeschoss
attr EnO_EG_FSB14_30 settingAccuracy high
attr EnO_EG_FSB14_30 shutTime 18
attr EnO_EG_FSB14_30 shutTimeCloses 22
attr EnO_EG_FSB14_30 stateFormat position
attr EnO_EG_FSB14_30 subDef 0200001E
attr EnO_EG_FSB14_30 subType manufProfile
attr EnO_EG_FSB14_30 teachMethod RPS
attr EnO_EG_FSB14_30 webCmd opens:stop:closes
mein Versuch...
{
"name": "shutterFAM14",
"author": "stixif",
"date": "2021-08-06",
"status": {
"bar": ["position:0:100:orange","position:1:%n:yellow","position:100:100:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["position:10:position %i10","position::position"],
"leftLong": ["state::closes"],
"leftLongRelease": ["state::stop"],
"text": ["closes::schließt...","opens::öffnet...","position:100:closed","position:0:open"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["position:10:position %i-10","position::position"],
"rightLong": ["state::opens"],
"rightLongRelease": ["state::stop"]
}
],
"info": {
"left1": ["up:::mdi-window-shutter-alert","down:::mdi-window-shutter-alert","position:1::mdi-window-shutter-open","position:::mdi-window-shutter"],
"left2": ["position::%s%"]
}
}
kann mir hier evtl. jemand weiter helfen?!?
besten dank schonmal
Zitat von: stixif am 07 August 2021, 17:52:32
Hallo,
FHEMapp gefällt mir sehr gut!
ist wirklich ein tolles Projekt mit Potential...
hab schonmal 1 template angepasst für Enocean mit FAM14 (Dimmer FUD14)
{
"name": "dimmerFAM14",
"author": "stixif",
"date": "2021-06-06",
"status": {
"bar": ["dim::%n:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["dim:10:dim %i-10","dim::off"],
"leftLong": ["state::off"],
"text": ["dim:1:an:","dim::aus"],
"rightBtn": "mdi-plus",
"rightClick": ["dim:90:on","dim::dim %i10"],
"rightLong": ["state::on"]
}
],
"info": {
"left1": ["dim:1::mdi-lightbulb","dim:::mdi-lightbulb-off"],
"left2": ["dim::%s%"]
}
}
aber nun komm ich beim Rolladen nicht weiter (Enocean FSB14)
Device
defmod EnO_EG_FSB14_30 EnOcean 0000001E
attr EnO_EG_FSB14_30 userattr ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate
attr EnO_EG_FSB14_30 ASC 1
attr EnO_EG_FSB14_30 ASC_Antifreeze off
attr EnO_EG_FSB14_30 ASC_Antifreeze_Pos 85
attr EnO_EG_FSB14_30 ASC_AutoAstroModeEvening HORIZON
attr EnO_EG_FSB14_30 ASC_AutoAstroModeEveningHorizon -4
attr EnO_EG_FSB14_30 ASC_AutoAstroModeMorning HORIZON
attr EnO_EG_FSB14_30 ASC_AutoAstroModeMorningHorizon 4
attr EnO_EG_FSB14_30 ASC_BlockingTime_afterManual 1200
attr EnO_EG_FSB14_30 ASC_BlockingTime_beforDayOpen 3600
attr EnO_EG_FSB14_30 ASC_BlockingTime_beforNightClose 3600
attr EnO_EG_FSB14_30 ASC_Closed_Pos 100
attr EnO_EG_FSB14_30 ASC_ComfortOpen_Pos 20
attr EnO_EG_FSB14_30 ASC_Drive_Delay -1
attr EnO_EG_FSB14_30 ASC_Drive_DelayStart -1
attr EnO_EG_FSB14_30 ASC_GuestRoom none
attr EnO_EG_FSB14_30 ASC_LockOut off
attr EnO_EG_FSB14_30 ASC_LockOut_Cmd none
attr EnO_EG_FSB14_30 ASC_Mode_Down always
attr EnO_EG_FSB14_30 ASC_Mode_Up always
attr EnO_EG_FSB14_30 ASC_Open_Pos 0
attr EnO_EG_FSB14_30 ASC_Partymode off
attr EnO_EG_FSB14_30 ASC_Pos_Reading position
attr EnO_EG_FSB14_30 ASC_PrivacyDownValue_beforeNightClose -1
attr EnO_EG_FSB14_30 ASC_PrivacyDown_Pos 50
attr EnO_EG_FSB14_30 ASC_Roommate_Device none
attr EnO_EG_FSB14_30 ASC_Roommate_Reading state
attr EnO_EG_FSB14_30 ASC_Shading_InOutAzimuth 200:280
attr EnO_EG_FSB14_30 ASC_Shading_MinMax_Elevation 15
attr EnO_EG_FSB14_30 ASC_Shading_Min_OutsideTemperature 22
attr EnO_EG_FSB14_30 ASC_Shading_Mode off
attr EnO_EG_FSB14_30 ASC_Shading_Pos 0
attr EnO_EG_FSB14_30 ASC_Shading_StateChange_SunnyCloudy 4500:3300
attr EnO_EG_FSB14_30 ASC_Shading_WaitingPeriod 1200
attr EnO_EG_FSB14_30 ASC_ShuttersPlace window
attr EnO_EG_FSB14_30 ASC_Time_Down_Early 17:00
attr EnO_EG_FSB14_30 ASC_Time_Down_Late 22:30
attr EnO_EG_FSB14_30 ASC_Time_Up_Early 06:30
attr EnO_EG_FSB14_30 ASC_Time_Up_Late 08:00
attr EnO_EG_FSB14_30 ASC_Time_Up_WE_Holiday 09:00
attr EnO_EG_FSB14_30 ASC_Ventilate_Pos 70
attr EnO_EG_FSB14_30 ASC_Ventilate_Window_Open on
attr EnO_EG_FSB14_30 ASC_WiggleValue 5
attr EnO_EG_FSB14_30 ASC_WindowRec none
attr EnO_EG_FSB14_30 ASC_WindowRec_subType twostate
attr EnO_EG_FSB14_30 DbLogExclude .*
attr EnO_EG_FSB14_30 IODev FAM14
attr EnO_EG_FSB14_30 alias Rollo_EG_Büro
attr EnO_EG_FSB14_30 appOptions {\
"template": "shutterFAM14",\
"name": "Büro Rolladen",\
"room": "Büro", \
"group": "Rolladen"\
}
attr EnO_EG_FSB14_30 comMode uniDir
attr EnO_EG_FSB14_30 devStateIcon down:fts_shutter_100 open_ack:fts_window_2w 0:fts_window_2w up:fts_window_2w 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40
attr EnO_EG_FSB14_30 eep A5-3F-7F
attr EnO_EG_FSB14_30 event-on-change-reading .*
attr EnO_EG_FSB14_30 group Rolladen
attr EnO_EG_FSB14_30 manufID 00D
attr EnO_EG_FSB14_30 model Eltako_FSB_ACK
attr EnO_EG_FSB14_30 room EnOcean,Erdgeschoss
attr EnO_EG_FSB14_30 settingAccuracy high
attr EnO_EG_FSB14_30 shutTime 18
attr EnO_EG_FSB14_30 shutTimeCloses 22
attr EnO_EG_FSB14_30 stateFormat position
attr EnO_EG_FSB14_30 subDef 0200001E
attr EnO_EG_FSB14_30 subType manufProfile
attr EnO_EG_FSB14_30 teachMethod RPS
attr EnO_EG_FSB14_30 webCmd opens:stop:closes
mein Versuch...
{
"name": "shutterFAM14",
"author": "stixif",
"date": "2021-08-06",
"status": {
"bar": ["position:0:100:orange","position:1:%n:yellow","position:100:100:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["position:10:position %i10","position::position"],
"leftLong": ["state::closes"],
"leftLongRelease": ["state::stop"],
"text": ["closes::schließt...","opens::öffnet...","position:100:closed","position:0:open"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["position:10:position %i-10","position::position"],
"rightLong": ["state::opens"],
"rightLongRelease": ["state::stop"]
}
],
"info": {
"left1": ["up:::mdi-window-shutter-alert","down:::mdi-window-shutter-alert","position:1::mdi-window-shutter-open","position:::mdi-window-shutter"],
"left2": ["position::%s%"]
}
}
kann mir hier evtl. jemand weiter helfen?!?
besten dank schonmal
Hallo,
vielen Dank für dein Feedback. :)
Deine Konfiguration für den Rollladen sieht soweit erstmal korrekt aus. Außer bei leftClick bin ich mir nicht sicher ob das passt. Hier hast du definiert, dass ab einem Wert von 10 bei jedem Click um 10 erhöht wird. Damit würden deine Werte auch über 100 steigen. Deshalb solltest du beim erhöhen von Werten immer zuerst mit der Definition des höchsten Wertes beginnen. Also was passieren soll, wenn der aktuelle Wert >= 90 ist.
Ansonsten lass mich bitte mal nicht wissen, wo genau du jetzt nicht weiter kommst.
PS.: falls dein Rollladen nicht auf Clicks reagiert, ist es übrigens hilfreich mal einen Set Befehl als Beispiel mit zu posten, der zeigt wie der Aktor korrekt angesteuert wird. Lass mich bitte auch mal noch wissen, ob für den Rollladen die aktuellen Statuswerte in der Statusbar und unten in der Infoleiste schon korrekt angezeigt werden.
Beste Grüße
Jens
Hi jemu75,
manchmal steht man einfach aufm schlauch :)
(danke fürs runterschubsen)
{
"name": "shutter_FSB14",
"author": "stixif",
"date": "2021-08-06",
"status": {
"bar": ["position:100:100:success","position:1:%n:yellow","position:0:100:orange"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["position:0:position %i10","position::position"],
"leftLong": ["state::closes"],
"leftLongRelease": ["state::closes"],
"midBtn": "mdi-pause",
"midClick": ["state::stop"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["position:1:position %i-10","position::position"],
"rightLong": ["state::opens"],
"rightLongRelease": ["state::opens"]
}
],
"info": {
"left1": ["state:up::mdi-window-shutter-alert","state:down::mdi-window-shutter-alert","position:1::mdi-window-shutter-open","position:::mdi-window-shutter"],
"left2": ["position::%s%"],
"mid1": ["state:up:öffnet...","state:down:schliesst...","position:0:offen","position:1:%s %","position:100:geschlossen"]
}
}
so schaut das ganz nun angenehm aus und funktioniert!
in der mitte hab ich nun die Pause taste eingebaut...
somit wären die Lichter + Rollos schon Visualisiert ;)
häng mich nun mal an Lüftung und Heizung
oder hat hier schon wer eine Vorlage erstellt?
Zitat von: stixif am 08 August 2021, 12:39:46
Hi jemu75,
manchmal steht man einfach aufm schlauch :)
(danke fürs runterschubsen)
{
"name": "shutter_FSB14",
"author": "stixif",
"date": "2021-08-06",
"status": {
"bar": ["position:100:100:success","position:1:%n:yellow","position:0:100:orange"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["position:0:position %i10","position::position"],
"leftLong": ["state::closes"],
"leftLongRelease": ["state::closes"],
"midBtn": "mdi-pause",
"midClick": ["state::stop"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["position:1:position %i-10","position::position"],
"rightLong": ["state::opens"],
"rightLongRelease": ["state::opens"]
}
],
"info": {
"left1": ["state:up::mdi-window-shutter-alert","state:down::mdi-window-shutter-alert","position:1::mdi-window-shutter-open","position:::mdi-window-shutter"],
"left2": ["position::%s%"],
"mid1": ["state:up:öffnet...","state:down:schliesst...","position:0:offen","position:1:%s %","position:100:geschlossen"]
}
}
so schaut das ganz nun angenehm aus und funktioniert!
in der mitte hab ich nun die Pause taste eingebaut...
somit wären die Lichter + Rollos schon Visualisiert ;)
häng mich nun mal an Lüftung und Heizung
oder hat hier schon wer eine Vorlage erstellt?
Prima, wenn ich helfen konnte. Ich hänge dir als Beispiel trotzdem mal noch eine Konfiguration meiner Dimmer an. Diese werden auch um jeweils 10% nach oben bzw. unten verändert. Wichtig ist, dass du beim verringern nicht unter 0% und beim erhöhen nicht über 100% kommst. (auch wenn FHEM) hier tolerant reagiert.
Ich würde dir also empfehlen, die Definition von leftClick und rightClick noch anzupassen.
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["pct:10:pct %i-10","pct::off"],
"leftLong": ["state::off"],
"text": ["pct:1:an:","pct::aus"],
"rightBtn": "mdi-plus",
"rightClick": ["pct:90:on","pct::pct %i10"],
"rightLong": ["state::on"]
}
],
Für Heizung kannst du ebenfalls mal in der Doku auf Github stöbern. Zum Thema Lüftung habe bisher noch nichts hier gelesen. Aber du kannst ja gern ein Template konfigurieren und dich bei Fragen hier melden. :)
Hi Jens,
Danke...
ich meine nun hab ichs verstanden...
{
"name": "shutter_FSB14",
"author": "stixif",
"date": "2021-08-06",
"status": {
"bar": ["position:100:100:success","position:1:%n:yellow","position:0:100:orange"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["position:90:position 100","position::position %i10"],
"leftLong": ["state::closes"],
"leftLongRelease": ["state::closes"],
"midBtn": "mdi-pause",
"midClick": ["state::stop"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["position::position %i-10","position:10:opens"],
"rightLong": ["state::opens"],
"rightLongRelease": ["state::opens"]
}
],
"info": {
"left1": ["state:up::mdi-window-shutter-alert","state:down::mdi-window-shutter-alert","position:1::mdi-window-shutter-open","position:::mdi-window-shutter"],
"left2": ["position::%s%"],
"mid1": ["state:up:öffnet...","state:down:schliesst...","position:0:offen","position:1:%s %","position:100:geschlossen"]
}
}
ist es irgend wie möglich das stateFormat eines Devices aus zu geben wie es in FHEM hinterlegt ist?
(mehrere readings eines Devices als Text ausgeben)
Zitat von: stixif am 08 August 2021, 15:24:54
Hi Jens,
Danke...
ich meine nun hab ichs verstanden...
{
"name": "shutter_FSB14",
"author": "stixif",
"date": "2021-08-06",
"status": {
"bar": ["position:100:100:success","position:1:%n:yellow","position:0:100:orange"],
"error": []
},
"main": [
{
"leftBtn": "mdi-chevron-down",
"leftClick": ["position:90:position 100","position::position %i10"],
"leftLong": ["state::closes"],
"leftLongRelease": ["state::closes"],
"midBtn": "mdi-pause",
"midClick": ["state::stop"],
"rightBtn": "mdi-chevron-up",
"rightClick": ["position::position %i-10","position:10:opens"],
"rightLong": ["state::opens"],
"rightLongRelease": ["state::opens"]
}
],
"info": {
"left1": ["state:up::mdi-window-shutter-alert","state:down::mdi-window-shutter-alert","position:1::mdi-window-shutter-open","position:::mdi-window-shutter"],
"left2": ["position::%s%"],
"mid1": ["state:up:öffnet...","state:down:schliesst...","position:0:offen","position:1:%s %","position:100:geschlossen"]
}
}
ist es irgend wie möglich das stateFormat eines Devices aus zu geben wie es in FHEM hinterlegt ist?
(mehrere readings eines Devices als Text ausgeben)
Hallo,
sorry für die verzögerte Rückmeldung. Mit stateFormat habe ich längere Zeit nicht mehr gearbeitet. Spontan würde ich sagen, dass der von FHEM formatierte Ausdruck nicht "abgreifbar" ist. Was genau möchtest du gern in FHEMApp anzeigen? Ich schau dann mal, wie man das lösen kann.
Deine o.g. Definition hat meiner Meinung nach noch ein paar "Unstimmigkeiten". Das ist nicht weiter dramatisch, wenn es bei Dir wie gewünscht funktioniert. Trotzdem folgender Hinweis die Events "...Long" und "...LongRelease" sollten nicht die gleichen Befehle enthalten. Das eine Event (...Long) wird bei längerem Drücken der Taste (nach ca. 1Sek.) ausgelöst. Das andere Event (...LongRelease) wird beim loslassen der Taste ausgelöst, wenn sie zuvor länger gedrückt wurde. Bei Dir wird also der FHEM Befehl "opens" bzw. "closes" dann doppelt abgesendet. Einmal nach ca. 1 Sekunde, wenn die Taste lange gedrückt wird und dann nochmal wenn du die Taste nach längerem Drücken wieder loslässt.
Warum habe ich diese unterschiedlichen Events (...Click, ...Long, ...LongRelease) zur Verfügung gestellt? In der Tat macht das für Jalousien am meisten Sinn. Ich habe mich hier an dem Verhalten meiner Homematic Aktoren orientiert. Diese reagieren wie folgt:
kurzes antippen der Taste = Motor läuft bis zur Endstellung (Jalousie wird also komplett geöffnet bzw. geschlossen)
erneutes kurzes antippen der Taste = Motor wird gestoppt falls er läuft
langes Drücken der Taste = Motor wird nach ca. 1Sek. gestartet
loslassen nach langem Drücken der Taste = Motor wird gestoppt
Wenn ich die Jalousie komplett öffnen bzw. schließen möchte, dann tippe ich die betreffende Taste einfach kurz an.
Wenn ich die Jalousie in eine bestimmte Position bringe möchte, dann halte ich die beteffende Taste solange gedrückt, bis die Position erreicht ist.
Am Beispiel sieht das dann bei einem Homematic Jalousie Aktor wie folgt aus:
{
"leftClick": ["motor:stop:off","motor::stop"],
"leftLong": ["motor::off"],
"leftLongRelease": ["motor::stop"],
"rightClick": ["motor:stop:on","motor::stop"],
"rightLong": ["motor::on"],
"rightLongRelease": ["motor::stop"]
}
Ich prüfe also über das Reading "motor" was der Motor gerade macht und sende dann entweder den Befehl "stop" oder je nach Taste den Befehl "on" (auf) oder "off" (zu).
Man kann das ganze auch über die Befehle "position" oder "pct" lösen, so wie du das gemacht hast. Letztlich so, wie es jedem am besten passt :)
Hallo,
ich habe eine KS300-Wetterstation (Device KS300), die in das FileLog FileLog_KS300 loggt:
2021-09-05_10:51:20 KS300 T: 21.8 H: 63 W: 0.0 R: 454.4 IR: no Wi: 0 D: 14.4
An der KS300 habe ich die appOptions
{ "template": "chart", "chartDef": ["FileLog_KS300:(4:temperature):Temperatur:°C"], "setup": { "daysAgo":3 } }
gesetzt. Im Chart wird aber nichts angezeigt und beim Drüberfahren mit der Maus kommt undefined NaN ....
Wie muss ich das anders machen, damit es funktioniert?
Viele Grüße
Boris
Hallo,
mit ist aufgefallen, dass im Github das Template weather nicht beschrieben ist. Die Beispieldarstellung des Wdigets im Bild wird jedoch mit den Default-Werten nicht angezeigt sondern nur "Leicht bewölkt". Wie muss das Template denn bitte konfiguriert werden?
Viele Grüße
Boris
Zitat von: Dr. Boris Neubert am 05 September 2021, 13:53:10
Hallo,
ich habe eine KS300-Wetterstation (Device KS300), die in das FileLog FileLog_KS300 loggt:
2021-09-05_10:51:20 KS300 T: 21.8 H: 63 W: 0.0 R: 454.4 IR: no Wi: 0 D: 14.4
An der KS300 habe ich die appOptions
{ "template": "chart", "chartDef": ["FileLog_KS300:(4:temperature):Temperatur:°C"], "setup": { "daysAgo":3 } }
gesetzt. Im Chart wird aber nichts angezeigt und beim Drüberfahren mit der Maus kommt undefined NaN ....
Wie muss ich das anders machen, damit es funktioniert?
Viele Grüße
Boris
Hallo Boris,
ich nutze zum Abrufen der Log-Daten den Fhem Befehl
getProbiere bitte mal mit get den gewünschten Temperaturwert direkt in FHEM mit get abzurufen. Ich könnte mir vorstellen, dass es an dem Filter temperature liegt. Dieser Text kommt in deinem Beispiel nicht vor.
Melde dich gern nochmal, wenn du nicht weiter kommst.
Beste Grüße
Jens :)
Zitat von: Dr. Boris Neubert am 05 September 2021, 13:56:02
Hallo,
mit ist aufgefallen, dass im Github das Template weather nicht beschrieben ist. Die Beispieldarstellung des Wdigets im Bild wird jedoch mit den Default-Werten nicht angezeigt sondern nur "Leicht bewölkt". Wie muss das Template denn bitte konfiguriert werden?
Viele Grüße
Boris
Bei Einsatz von darksky oder proplanta musst du im betreffenden Fhem-Device unter appOptions nur
{ "template": "weather" }
definieren. Danach sollte das Device in FHEMApp zu sehen sein. Ich muss das mal mit in der Doku ergänzen.
Beste Grüße
Jens :)
Danke, Jens, ich habe mich nicht klar ausgedrückt: ich habe das Template schon in den appOptions aber es erscheint keine Liste mit Vorhersage sondern nur der Text "leicht bewölkt" im Widget. Hier die Definition meines Weather-Device:
define Wetter Weather apikey=versteckt interval=1800 lang=de
attr Wetter appOptions { "template": "weather" }
attr Wetter room Wetter
Zitat von: jemu75 am 05 September 2021, 14:59:28
ich nutze zum Abrufen der Log-Daten den Fhem Befehl get
Probiere bitte mal mit get den gewünschten Temperaturwert direkt in FHEM mit get abzurufen. Ich könnte mir vorstellen, dass es an dem Filter temperature liegt. Dieser Text kommt in deinem Beispiel nicht vor.
Ach so, der Wert in Klammern ist die <column_spec> aus dem Get vom FileLog. Das hat sich mir beim Lesen nicht erschlossen.
Damit sind dann auch schon weitere Fragen geklärt, z.B. wie man den stündlichen Regen anzeigen lässt.
Danke. Es funktioniert.
Das Widget kann man ausklappen (rechts oben), dann gibt es mehr Infos (siehe Beispiel).
Zitat von: LuGu am 06 September 2021, 07:48:46
Das Widget kann man ausklappen (rechts oben), dann gibt es mehr Infos (siehe Beispiel).
Oh Mann, das war jetzt zu einfach :-[
Danke fürs Draufstoßen.
Hallo,
ich habe eine dimmbares HUEDevice von IKEA. Das dimmen funktioniert auch soweit, allerdings möchte ich bei einem Longklick auf den rechten Button die volle Helligkeit haben.
Aber das will nicht!?
{ "template": "dimmer",
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["pct:10:pct %i-10","pct::0"],
"leftLong": ["state::off"],
"text": ["onoff:1:an:","onoff:0:aus"],
"rightBtn": "mdi-plus",
"rightClick": ["pct:90:100","pct::pct %i10"],
"rightLong": ["pct::100"]
}
]
}
oder ist das nicht so möglich?
Zitat von: fretti am 16 September 2021, 09:14:34
Hallo,
ich habe eine dimmbares HUEDevice von IKEA. Das dimmen funktioniert auch soweit, allerdings möchte ich bei einem Longklick auf den rechten Button die volle Helligkeit haben.
Aber das will nicht!?
{ "template": "dimmer",
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["pct:10:pct %i-10","pct::0"],
"leftLong": ["state::off"],
"text": ["onoff:1:an:","onoff:0:aus"],
"rightBtn": "mdi-plus",
"rightClick": ["pct:90:100","pct::pct %i10"],
"rightLong": ["pct::100"]
}
]
}
oder ist das nicht so möglich?
Probiere es bitte mal mit
["state::on"]
Hallo,
Zitat von: fretti am 16 September 2021, 09:14:34
{ "template": "dimmer",
"main": [
...}
im templ_dimmer.json ist
...
"rightLong": ["state::on"]
...
Ich habe das Template so für Ikea-Tradfri-Lampen verwendet. Nur der Klick auf den Text an/aus geht nicht.
Kann man aus dem main-Abschnitt nur einzelne Attribute in den appOptions am FHEM-Device überschreiben oder muss man die gesamte main-Sektion wiederholen?
Ist vorgesehen, von Benutzer erstellte Templates einzusammeln? Dann sollten wir uns Gedanken über Namenskonventionen machen (es gibt ja schon Dimmer und Dimmer2).
Überschreiben von templ_dimmer.json kommt nicht in Frage, weil ich dann nicht einfach mehr Updates machen kann.
Grüße
Boris
Zitat von: jemu75 am 16 September 2021, 13:41:50
Probiere es bitte mal mit
["state::on"]
Bei Verwendung von state::on schaltet die Lampe in der letzten eingestellten Helligkeit ein, deshalb meine Idee über pct auf volle Helligkeit zu gehen.
Zitat von: fretti am 16 September 2021, 16:11:24
Bei Verwendung von state::on schaltet die Lampe in der letzten eingestellten Helligkeit ein, deshalb meine Idee über pct auf volle Helligkeit zu gehen.
Verstehe. Ich probiere mal mit...
Habe ein Template templ_dimmer3.json erstellt und der dimmbaren Tradfri-Lampe zugewiesen:
{
"name": "dimmer3",
"author": "borisneubert",
"date": "2021-09-16",
"status": {
"bar": ["pct::%n:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["pct:10:pct %i-10","pct::off"],
"leftLong": ["state::off"],
"text": ["pct:1:an:","pct::aus"],
"midClick": ["state::toggle"],
"rightBtn": "mdi-plus",
"rightClick": ["pct:90:on","pct::pct %i10"],
"rightLong": ["pct::100"]
}
],
"info": {
"left1": ["pct:1::mdi-lightbulb","pct:::mdi-lightbulb-off"],
"left2": ["pct::%s%"]
}
}
Bei rightLong komme ich nach Lesen der Doku auf die gleiche Lösung wie fretti. Ich will außerdem togglen, wenn ich die mittlere Taste (an/aus) klicke. Beides funktioniert nicht.
Wie kann man sehen/debuggen, welche Kommandos fhemApp absetzt?
Zitat von: Dr. Boris Neubert am 16 September 2021, 18:00:32
Verstehe. Ich probiere mal mit...
Habe ein Template templ_dimmer3.json erstellt und der dimmbaren Tradfri-Lampe zugewiesen:
{
"name": "dimmer3",
"author": "borisneubert",
"date": "2021-09-16",
"status": {
"bar": ["pct::%n:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["pct:10:pct %i-10","pct::off"],
"leftLong": ["state::off"],
"text": ["pct:1:an:","pct::aus"],
"midClick": ["state::toggle"],
"rightBtn": "mdi-plus",
"rightClick": ["pct:90:on","pct::pct %i10"],
"rightLong": ["pct::100"]
}
],
"info": {
"left1": ["pct:1::mdi-lightbulb","pct:::mdi-lightbulb-off"],
"left2": ["pct::%s%"]
}
}
Bei rightLong komme ich nach Lesen der Doku auf die gleiche Lösung wie fretti. Ich will außerdem togglen, wenn ich die mittlere Taste (an/aus) klicke. Beides funktioniert nicht.
Wie kann man sehen/debuggen, welche Kommandos fhemApp absetzt?
Den Debug-Modus kannst du in der config.json über den Parameter
"debugMode": true aktivieren.
siehe auch: https://github.com/jemu75/fhemApp#debug-modus-f%C3%BCr-fhemapp-optional (https://github.com/jemu75/fhemApp#debug-modus-f%C3%BCr-fhemapp-optional)
Unabhängig von dem Debug-Mode kann man das Systemprotokoll über
http://<meine_ip>:<port>/fhem/fhemapp/index.html#/syslog aufrufen und sehen, welche Befehle gesendet werden.
Die Befehle, die beim Betätigen der Button erzeugt werden sehen immer wie folgt aus:
set <device> <definition>Die Definition ist das, was du nach dem zweiten Doppelpunkt angibst. Wenn dort also 100 steht dann sieht der set-Befehl wie folgt aus:
set device_xyz 100Das dürfte im konkreten Fall nicht funktionieren, da der Befehl sicher
set device_xyz pct 100 lauten muss.
Also sollte die Klick-Definition wie folgt aussehen:
"rightLong": ["pct::pct 100"]
Übrigens, die Definition beinhaltet folgende 3 Blöcke ["<reading welches geprüft werden soll>:<bedingung die erfüllt sein muss>:<set befehl der ausgeführt wird, wenn die Bedingung erfüllt ist>"]
Wenn also zwischen dem ersten Doppelpunkt und dem zweiten Doppelpunkt nichts definiert ist, kannst du im ersten Block faktisch jedes beliebige Reading reinschreiben.
Bitte hier gern auch mal die Doku ansehen - siehe https://github.com/jemu75/fhemApp#zuweisung-von-elementen (https://github.com/jemu75/fhemApp#zuweisung-von-elementen)
Vielen Dank, Jens, für die ausführliche Antwort!
Ich hatte die Doku vorher gelesen, sogar so verstanden, wie Du es nochmal erläutert hast, und dann doch falsch umgesetzt.
Zitat von: jemu75 am 16 September 2021, 21:00:04
Also sollte die Klick-Definition wie folgt aussehen:
"rightLong": ["pct::pct 100"]
Habe dazu jetzt so umgesetzt und es funktioniert damit. @fretti, Deine Aufgabe sollte damit dann genauso erledigt sein, nicht wahr?
Ich habe dann auch gleich selbst kapiert, dass ich auf Texte nicht klicken kann und statt eines Textes eines midBtn eingesetzt, um die Lampe zu toggeln. Folgendes Template funktioniert nun für mich wie gewollt:
{
"name": "dimmer3",
"description": "HUEDevice dimmer",
"author": "borisneubert",
"date": "2021-09-17",
"status": {
"bar": ["pct::%n:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-minus",
"leftClick": ["pct:10:pct %i-10","pct::off"],
"leftLong": ["state::off"],
"midBtn": ["onoff:1:mdi-lightbulb-on","onoff:0:mdi-lightbulb-off-outline"],
"midClick": ["state::toggle"],
"rightBtn": "mdi-plus",
"rightClick": ["pct:90:on","pct::pct %i10"],
"rightLong": ["pct::pct 100"]
}
],
"info": {
"left1": ["pct:1::mdi-lightbulb","pct:::mdi-lightbulb-off"],
"left2": ["pct::%s%"]
}
}
Was ich nicht in der Doku gefunden habe aber durch Ausprobieren und Nachdenken ist wie man die Icons benennt. Man muss nämlich dem Namen des Icons von der Seite https://materialdesignicons.com/ (https://materialdesignicons.com/), der sich bei Mouse-Over zeigt, ein mdi- voranstellen.
Ich gebe für Hilfe immer gerne auch was zurück. Nimmst du Pull-Requests auf Github an?
Viele Grüße
Boris
Gehe ich recht in der Annahme, dass bei Angabe mehrerer Bedingungen z.B. für main.text ALLE Bedingungen geprüft werden?
Wäre es nicht für praktisch alle Anwendungsfälle sinnvoller, wenn die Prüfung nach dem ersten Match abbricht?
Beispiel:
"text": ["state:set_open:öffnet...",
"state:set_close:schließt...",
"Shutter1_Position:100:offen",
"Shutter1_Position:1:teils offen",
"Shutter1_Position::geschlossen"
]
Das ist für Tasmota-Rollladen. Wenn der Rollladen runter fährt, wird state auf set_close gesetzt und Shutter1_Position läuft runter. Daher erscheint kurz "schließt..." und dann "teils offen", bis der Rolladen ganz zu ist und "geschlossen" angezeigt wird.
Zitat von: Dr. Boris Neubert am 20 September 2021, 19:01:11
Gehe ich recht in der Annahme, dass bei Angabe mehrerer Bedingungen z.B. für main.text ALLE Bedingungen geprüft werden?
Wäre es nicht für praktisch alle Anwendungsfälle sinnvoller, wenn die Prüfung nach dem ersten Match abbricht?
Beispiel:
"text": ["state:set_open:öffnet...",
"state:set_close:schließt...",
"Shutter1_Position:100:offen",
"Shutter1_Position:1:teils offen",
"Shutter1_Position::geschlossen"
]
Das ist für Tasmota-Rollladen. Wenn der Rollladen runter fährt, wird state auf set_close gesetzt und Shutter1_Position läuft runter. Daher erscheint kurz "schließt..." und dann "teils offen", bis der Rolladen ganz zu ist und "geschlossen" angezeigt wird.
Hallo,
die Bedingungen werden von links nach rechts geprüft. Sobald die erste Bedingung zutrifft, wird die Prüfung beendet. Deshalb ist es wichtig, die Bedingungen ist der richtigen Reihenfolge zu definieren.
PS.: zu deiner Frage bzgl. pullrequest auf github. Wir haben bisher alle Anforderungen hier über das Forum eingesteuert, da es so auch User lesen, die mit github nicht so vertraut sind.
Beste Grüße
Jens :)
Hallo Boris,
eine weitere Möglichkeit, über einen Klick auf den Text in der Mitte eine Aktion auszulösen, ist das midMenu.
Beispiel Radio programm
"leftBtn": "mdi-minus",
"leftClick": ["Vol::VolDn 1"],
"leftLong": ["playStatus:Play:Mute 1"],
"midBtn": "mdi-dots-vertical",
"text": ["StationRdbl::%s"],
"midMenu": ["1 Live:Station 1_Live","RTL 89.0:Station 89_0","Absolut Hot:Station AbsHOT","WDR 2:Station WDR2","WDR 5:Station WDR5"],
"rightBtn": "mdi-plus",
"rightClick": ["Vol::VolUp 1"],
"rightLong": ["playStatus:Mute:Mute 0"]
},
Ein Nachteil ist das der Anzeigetext nicht skaliert, ich glaube es werden 8 Buchstaben gezeigt. Deswegen habe ich die Radiosender im Reading ''StationRdbl'' auf 8 Buchstaben gekürzt, und und z.B. 89_0 durch 89,0 ersetzt. Im midMenu sind die Klartextnamen des Menues, und rechts vom ":" die Aktion.
Zitat von: Jamo am 21 September 2021, 00:15:32
"leftBtn": "mdi-minus",
"leftClick": ["Vol::VolDn 1"],
"leftLong": ["playStatus:Play:Mute 1"],
"midBtn": "mdi-dots-vertical",
"text": ["StationRdbl::%s"],
"midMenu": ["1 Live:Station 1_Live","RTL 89.0:Station 89_0","Absolut Hot:Station AbsHOT","WDR 2:Station WDR2","WDR 5:Station WDR5"],
"rightBtn": "mdi-plus",
"rightClick": ["Vol::VolUp 1"],
"rightLong": ["playStatus:Mute:Mute 0"]
},
Ich sehe, dass Du einen Text und einen midBtn hast. Wenn ich einen midBtn angegeben habe, erschien bei mir der Text nicht mehr. Habe ich da was falsch gemacht?
Hallo Boris,
ist denn das reading fuer den "text" definiert?
Wenn ich bei mir den midBtn weglasse, wird der "text" hell, aber es erscheint kein Menue mehr beim klicken auf den Text.
Mit midBtn wird der "text" leicht grau, und ich kann auf den Text klicken, es erscheint das Menu.
Hier das release, ab der das funktioniert: https://forum.fhem.de/index.php/topic,120911.msg1158359.html#msg1158359
Hier hat Jens damals beschrieben wie es funktioniert und angewendet wird.
https://forum.fhem.de/index.php/topic,120913.msg1158424.html#msg1158424
Hallo Jamo,
Zitat von: Jamo am 21 September 2021, 09:25:46
ist denn das reading fuer den "text" definiert?
Wenn ich bei mir den midBtn weglasse, wird der "text" hell, aber es erscheint kein Menue mehr beim klicken auf den Text.
Mit midBtn wird der "text" leicht grau, und ich kann auf den Text klicken, es erscheint das Menu.
ich habe die aktuelle Version von fhemApp installiert. Hier mein Template zur Erläuterung:
{
"name": "shutter3",
"author": "borisneubert",
"description": "Tasmota-based shutters",
"date": "2021-09-20",
"status": {
"bar": ["Shutter1_Position::%n:success:invert"],
"error": []
},
"main": [
{
"leftBtn": ["pct:1:mdi-chevron-down","pct::mdi-chevron-down:disabled"],
"leftClick": ["state:set_close:stop","pct:1:close","pct::"],
"text": ["state:set_open:öffnet...","state:set_close:schließt...","state:1:offen","state::geschlossen"],
"rightBtn": ["Shutter1_Position:100:mdi-chevron-up:disabled","Shutter1_Position::mdi-chevron-up"],
"rightClick": ["Shutter1_Position:100:","state:set_open:stop","state::open"]
}
],
"info": {
"left1": ["state:set_.*::mdi-window-shutter-alert","pct:1::mdi-window-shutter-open","pct:::mdi-window-shutter"],
"left2": ["Shutter1_Position::%s%"]
}
}
Bei mir läuft erst einmal obiges Template und der Text wird entsprechend angezeigt. Auch wenn ich
"midClick": ["state::stop"],
unter main hinzufüge, ist das mittlere Feld nicht klickbar. Erst wenn ich auch noch
"midBtn": "mdi-dots-vertical",
unter main hinzufüge, wird das mittlere Feld klickbar und ich kann die Rollladenfahrt damit stoppen. Jedoch sehe ich dann statt des Texts nur das Icon (egal welches Icon). Auch mit einer leeren midBtn-Definition "[state::]" kommt kein Text.
Viele Grüße
Boris
(ich trenne das hier ab und schiebe es in Template-Konfiguration)
Zitat von: jemu75 am 20 September 2021, 21:11:16
die Bedingungen werden von links nach rechts geprüft. Sobald die erste Bedingung zutrifft, wird die Prüfung beendet. Deshalb ist es wichtig, die Bedingungen ist der richtigen Reihenfolge zu definieren.
Danke Jens. Mit der Erklärung konnte ich ausschließen, dass es aufgrund der Verwendung unterschiedlicher Readings nicht bei funktioniert. Ursache war nach weitergehender Analyse, dass im Reading state erst "state_close" kommt und dann "closing", wenn der Rollladen runterfährt. Das hatte ich nicht gesehen. Wenn ich beide Werte im Regex für state beachte, funktioniert die Anzeige.
"text": [
"state:set_open|opening:öffnet...",
"state:set_close|closing:schließt...",
"Shutter1_Position:100:offen",
"Shutter1_Position:1:teils offen",
"Shutter1_Position::geschlossen"
],
Zitat von: Dr. Boris Neubert am 21 September 2021, 11:18:40
Hallo Jamo,
ich habe die aktuelle Version von fhemApp installiert. Hier mein Template zur Erläuterung:
{
"name": "shutter3",
"author": "borisneubert",
"description": "Tasmota-based shutters",
"date": "2021-09-20",
"status": {
"bar": ["Shutter1_Position::%n:success:invert"],
"error": []
},
"main": [
{
"leftBtn": ["pct:1:mdi-chevron-down","pct::mdi-chevron-down:disabled"],
"leftClick": ["state:set_close:stop","pct:1:close","pct::"],
"text": ["state:set_open:öffnet...","state:set_close:schließt...","state:1:offen","state::geschlossen"],
"rightBtn": ["Shutter1_Position:100:mdi-chevron-up:disabled","Shutter1_Position::mdi-chevron-up"],
"rightClick": ["Shutter1_Position:100:","state:set_open:stop","state::open"]
}
],
"info": {
"left1": ["state:set_.*::mdi-window-shutter-alert","pct:1::mdi-window-shutter-open","pct:::mdi-window-shutter"],
"left2": ["Shutter1_Position::%s%"]
}
}
Bei mir läuft erst einmal obiges Template und der Text wird entsprechend angezeigt. Auch wenn ich
"midClick": ["state::stop"],
unter main hinzufüge, ist das mittlere Feld nicht klickbar. Erst wenn ich auch noch
"midBtn": "mdi-dots-vertical",
unter main hinzufüge, wird das mittlere Feld klickbar und ich kann die Rollladenfahrt damit stoppen. Jedoch sehe ich dann statt des Texts nur das Icon (egal welches Icon). Auch mit einer leeren midBtn-Definition "[state::]" kommt kein Text.
Viele Grüße
Boris
(ich trenne das hier ab und schiebe es in Template-Konfiguration)
Du hast "midMenu" nicht definiert. "midClick" funktioniert nicht.
Zitat von: Jamo am 21 September 2021, 11:53:04
Du hast "midMenu" nicht definiert. "midClick" funktioniert nicht.
Ja, ich weiß, das habe ich ausprobiert, aber das will ich nicht (der Text erscheint in Großbuchstaben und es gibt ein Popup-Menu). Ich will ja nur, dass midClick auch auf Text funktioniert. Daher der Featurewunsch.
Eine "point" Darstellung hat das chart-template nicht oder ? Ich würde gerne meine Bewegungsmelder so darstellen :
Marc
Zitat von: marcg am 02 November 2021, 12:05:14
Eine "point" Darstellung hat das chart-template nicht oder ? Ich würde gerne meine Bewegungsmelder so darstellen :
Marc
Hallo Marc,
aktuell leider nicht implementiert. Würde ich mir aber gern noch mal ansehen, da dein Beispiel Bewegungsmelder sehr gut visualisiert.
Folgende Frage dazu. Wie sehen die Werte aus, mit denen dein Chart befüllt wird. Konkret würde mich interessieren, wie du die Punkte auf unterschiedliche Y-Positionen bringst, wenn mehrere Melder im Chart dargestellt werden.
Hallo,
die Melder geben mittels Userreading eine 1 aus (State motion) bei Bewegung und eine 0 bei keiner Bewegung (State nomotion). Die dargestellten Punkte sind also nur die mit 1. Der eine Melder linke Einteilung, der andere rechte Einteilung. Die Anzeige der 0 wird im Range ausgeblendet und gedreht damit der eine oben ist der andere unten.. Siehe Anhang...
Gruß & Danke
Marc
Zitat von: marcg am 05 November 2021, 10:40:49
Hallo,
die Melder geben mittels Userreading eine 1 aus (State motion) bei Bewegung und eine 0 bei keiner Bewegung (State nomotion). Die dargestellten Punkte sind also nur die mit 1. Der eine Melder linke Einteilung, der andere rechte Einteilung. Die Anzeige der 0 wird im Range ausgeblendet und gedreht damit der eine oben ist der andere unten.. Siehe Anhang...
Gruß & Danke
Marc
Hallo Marc,
ich habe mal was vorbereitet. Aktuell sieht das wie folgt aus. (siehe Anhang) Ich würde jetzt noch den "Feinschliff" machen und dann ein neues Releasee freigeben. :)
Zitat von: marcg am 02 November 2021, 12:05:14
Eine "point" Darstellung hat das chart-template nicht oder ? Ich würde gerne meine Bewegungsmelder so darstellen :
Marc
Hallo Marc,
ich habe eben ein neues Release freigegeben. Mit diesem ist die gewünschte Darstellung möglich. (Hinweise siehe Release-Notes)
Folgenden Unterschied gibt es in meiner Lösung. Damit die Punkte auf unterschiedlichen "Höhen" im Chart angezeigt werden, habe ich für jeden Bewegungsmelder ein userreading erstellt.
Ich habe das userreading bei mir "motionChartDot" genannt. Wenn der Bewegungsmelder eine Bewegung erkennt, so setze ich den Wert beim ersten Bewegungsmelder auf 2 beim zweiten auf 3 bei dritten 4 usw.
Wenn der Bewegungsmelder keine Bewegung erkennt, dann setze ich den Wert immer auf 0.
Die Definition für das userreading sieht bei mir z.B. so aus:
motionChartDot { return 0 if (ReadingsVal("$name", "motion", 0) eq "off");;;; return 4;; }
Und appOptions zur Darstellung des Diagrammes sieht so aus:
{ "template": "chart", "dashboard": "true", "chartDef": [":motionChartDot:Flur::no-label::1:5::0:4","motion.os.eg_FileLog:ter.motionChartDot:Terrasse::no-label::1:5::0:4","motion.os.eg_FileLog:ef.motionChartDot:Einfahrt::no-label::1:5::0:4"] }
Bei Fragen melde dich gern.
Beste Grüße
Jens :)
Wow....viel Dank.
Probiere ich natürlich gleich aus...
Grüße
Marc
Hallo Ihr,
habe das sysmon genutzt, um meine NAS in FhemApp darzustellen. Klappt auch ganz gut. Folgende 2 Fragen:
- Die CPU-Last wird von 0-1 angegeben. Habe in der Definition der bar auch 0:1 definiert. Leider ist die Leiste immer "leer".
- Der Status der HDDs wird von 1-5 definiert. Normal(1) Initialized(2) NotInitialized(3) SystemPartitionFailed(4) Crashed(5)
Wie kann ich den Klartext im Template darstellen? Vielleicht auch, dass bei 1 die Bar grün ist und beio den Stati 2-5 rot?
{ "template": "sysmon", "system": "true", "setup": {"subTitle": ["Internals.SystemDescription::%s"], "main": [{ "name": "CPU Auslastung:", "bar": ["load::%s:success:0:1"], "subText": ["load::%s"] }, {"name": "NAS Temperatur:", "bar": ["temperature::%n:success:0:100"], "subText": ["temperature::%n.1 °C"]}, {"name": "HDD1 Temperatur:", "bar": ["temp_hdd1::%n:success:0:100"], "subText": ["temp_hdd1::%n.1 °C"]}, {"name": "HDD2 Temperatur:", "bar": ["temp_hdd2::%n:success:0:100"], "subText": ["temp_hdd2::%n.1 °C"]},{"name": "HDD1 Status:", "subText": ["state_hdd1::%s"]}, {"name": "HDD2 Status:", "subText": ["state_hdd2::%s"]}, { "name": "NAS läuft seit:", "subText": ["uptime::%s"] } ]}}
Gruß
Marco
Hallo zusammen,
eine kleine Frage an Euch Experten: Ich habe verstanden, dass man das cam template auch zur Anzeige statischer Bilder verwenden kann.
Ist es auch möglich, den Pfad dieses Bildes aus einem Reading heraus zu nehmen? Und wenn ja, ändert das Template dann auch das Bild "automatisch", sobald sich das Reading ändert?
Danke und viele Grüße,
Andreas
Du musst zumindest ein reload machen, weil es ja kein reading gibt, auf das das template triggered. Der Pfad zu der source wird im attribut gesetzt. z.B. DWD für Bayerndefmod DWDBay dummy
attr DWDBay appOptions { "template": "cam", "name": "DWD Bayern", "group": "Wetter", "sortby": 400, "setup": { "size": "col-12 col-sm-6 col-md-4 col-lg-4", "source": "http://www.dwd.de/DWD/wetter/radar/radfilm_bay_akt.gif" } }
Man kann zumindest das attribut dynamisch verändern, z.B. fhem ("attr DWDBay appOptions ....") aber dann muss man danach immer noch ein re-load machen.
Zitat von: marboj am 03 Februar 2022, 09:11:19
Hallo Ihr,
habe das sysmon genutzt, um meine NAS in FhemApp darzustellen. Klappt auch ganz gut. Folgende 2 Fragen:
- Die CPU-Last wird von 0-1 angegeben. Habe in der Definition der bar auch 0:1 definiert. Leider ist die Leiste immer "leer".
- Der Status der HDDs wird von 1-5 definiert. Normal(1) Initialized(2) NotInitialized(3) SystemPartitionFailed(4) Crashed(5)
Wie kann ich den Klartext im Template darstellen? Vielleicht auch, dass bei 1 die Bar grün ist und beio den Stati 2-5 rot?
{ "template": "sysmon", "system": "true", "setup": {"subTitle": ["Internals.SystemDescription::%s"], "main": [{ "name": "CPU Auslastung:", "bar": ["load::%s:success:0:1"], "subText": ["load::%s"] }, {"name": "NAS Temperatur:", "bar": ["temperature::%n:success:0:100"], "subText": ["temperature::%n.1 °C"]}, {"name": "HDD1 Temperatur:", "bar": ["temp_hdd1::%n:success:0:100"], "subText": ["temp_hdd1::%n.1 °C"]}, {"name": "HDD2 Temperatur:", "bar": ["temp_hdd2::%n:success:0:100"], "subText": ["temp_hdd2::%n.1 °C"]},{"name": "HDD1 Status:", "subText": ["state_hdd1::%s"]}, {"name": "HDD2 Status:", "subText": ["state_hdd2::%s"]}, { "name": "NAS läuft seit:", "subText": ["uptime::%s"] } ]}}
Gruß
Marco
Hallo Marco,
gebe die Parameter für die Bar bitte mal wie folgt ein:
[value:color:min:max]
"bar": ["load:success:0:1"],
Die individuelle Anzeige des "Subtext" müsstest du wie folgt konfigurieren:
[reading:value:text]
"subText": ["state_hdd1:1:normal","state_hdd1:2:Inizialized","state_hdd1:3:NotInizialized","state_hdd1:4:SystemPartitionFailed","state_hdd1:5:Crashed"]
Beste Grüße
Jens :)
Hallo Jens,
der Status der HDD hat geklappt, die CPU-Nutzung zeigt nach deinem Vorschlag gar keine Bar mehr an :-[
Habe die CPU-Nutzung jetzt über ein Userreading gelöst und den Prozentsatz in % berechnet.
userReadings cpu_app { 100 * ReadingsVal("AZ.NASStat","load",0)}
"bar": ["cpu_app::%s:success:0:100"], "subText": ["cpu_app::%n.1 %"] }
Gruß
Marco
Hallo, ich verwende das Cam Template, um ein Bild des QR-Codes für mein Gast-WLAN anzuzeigen. Gibt es die Möglichkeit für "expand" auch in diesem Template, so dass ich den QR-Code nur bei Bedarf anzeigen lassen kann und er normalerweise "eingeklappt" ist?
Ich habe jetzt an verschiedenen Stellen mit "expand": true und "expanded": false experimentiert. Leider ohne Erfolg.
Die appOptions sieht folgendermaßen aus:
{ "template": "cam",
"home": "true",
"room": "Flur",
"name": "Gast WLAN QR-Code",
"setup": { "source": "http://xxx.xxx.xxx.xxx:8083/fhem/images/Imperiales_Gast_WLAN.png" } }
Zitat von: Wolle02 am 21 Februar 2022, 19:25:06
Hallo, ich verwende das Cam Template, um ein Bild des QR-Codes für mein Gast-WLAN anzuzeigen. Gibt es die Möglichkeit für "expand" auch in diesem Template, so dass ich den QR-Code nur bei Bedarf anzeigen lassen kann und er normalerweise "eingeklappt" ist?
Ich habe jetzt an verschiedenen Stellen mit "expand": true und "expanded": false experimentiert. Leider ohne Erfolg.
Die appOptions sieht folgendermaßen aus:
{ "template": "cam",
"home": "true",
"room": "Flur",
"name": "Gast WLAN QR-Code",
"setup": { "source": "http://xxx.xxx.xxx.xxx:8083/fhem/images/Imperiales_Gast_WLAN.png" } }
Hallo Wolle,
die Eigenschaft gibt es derzeit leider nicht in dem Template "cam". Ich hatte auch schon überlegt, die Anzeige von Bildern generell in das Standard-Template zu integrieren. Damit stünden dann alle Funktionen, die das Standard-Template mitbringt, zur Verfügung. Zeitlich ist aktuell leider nicht all zu viel drin, aber ich behalte das mit auf dem Schirm.
Beste Grüße
Jens. :)
bezüglich der Charts: Welchen Wert muss "daysAgo" haben, wenn ich nur die Daten vom heutigen Tag angezeigt haben will?
Bisher hatte ich "daysAgo": 0.5, aber das funktioniert aus irgendeinem Grund seit kurzem nicht mehr, es wird dann nichts mehr angezeigt, also das Chart ist dann leer und zeigt gar keine Kurve/Daten. "daysAgo": 0 liefert alle vorherigen Tage, "daysAgo": 1 liefert den Graph für gestern.
{ "template": "chart", "name": "Klima Draussen", "dashboard": true, "sortby": 10, "setup": { "status": { "bar": ["temperature:30:100:error", "temperature:25:75:warning","temperature:10:50:success", "temperature::25:info"],"error": []}, "info": { "mid1": ["temperature::Aktuell: %n.1 °C:mdi-thermometer"] }, "daysAgo": 1}, "chartDef": ["myDbLog:(Temp_Aussen:temperature):Temperatur:°C::::::2","myDbLog:(Temp_Aussen:humidity):Feuchtigkeit: %:secondary:::::2"] }
Hallo zusammen,
ich habe fhemapp gerade für mich entdeckt, und habe direkt eine Frage:
Wie kann ich einen Schalter definieren der 4 Stati hat?
Ich brauche das für meine Lüftungsanlage, die hat 3 Stufen + Aus.
Gruß,
Thorsten
Zitat von: thoweiss am 11 März 2022, 08:00:52
Hallo zusammen,
ich habe fhemapp gerade für mich entdeckt, und habe direkt eine Frage:
Wie kann ich einen Schalter definieren der 4 Stati hat?
Ich brauche das für meine Lüftungsanlage, die hat 3 Stufen + Aus.
Gruß,
Thorsten
Hallo Thorsten,
spontan sehe ich da drei Möglichkeiten
1) einen einfachen Switch, der abhängig vom aktuellen Status der Lüftungsanlage zum nächsten Status schaltet
2) über ein Dropdown (Parameter "menu")
3) über mehrere Ebenen, also je Ebene einen bestimmten Modus der Lüftungsanlage schalten
Schau die gern mal die Beispiele in der Dokumentation an. Je nach dem, was dir optisch am meisten zusagt, kannst du dich gern noch mal bzgl. Umsetzung einer der o.g. Varianten melden. :)
Hsllo Jens, nochmal bezüglich der Charts: Welchen Wert muss "daysAgo" haben, wenn ich nur die Daten vom heutigen Tag angezeigt haben will?
Bisher hatte ich "daysAgo": 0.5, aber das funktioniert aus irgendeinem Grund seit kurzem nicht mehr, es wird dann nichts mehr angezeigt, also das Chart ist dann leer und zeigt gar keine Kurve/Daten. "daysAgo": 0 liefert alle vorherigen Tage, "daysAgo": 1 liefert den Graph für gestern.
{ "template": "chart", "name": "Klima Draussen", "dashboard": true, "sortby": 10, "setup": { "status": { "bar": ["temperature:30:100:error", "temperature:25:75:warning","temperature:10:50:success", "temperature::25:info"],"error": []}, "info": { "mid1": ["temperature::Aktuell: %n.1 °C:mdi-thermometer"] }, "daysAgo": 1}, "chartDef": ["myDbLog:(Temp_Aussen:temperature):Temperatur:°C::::::2","myDbLog:(Temp_Aussen:humidity):Feuchtigkeit: %:secondary:::::2"] }
Zitat von: Jamo am 12 März 2022, 15:10:07
Hsllo Jens, nochmal bezüglich der Charts: Welchen Wert muss "daysAgo" haben, wenn ich nur die Daten vom heutigen Tag angezeigt haben will?
Bisher hatte ich "daysAgo": 0.5, aber das funktioniert aus irgendeinem Grund set kurzem nicht mehr, es wird dann nichts mehr angezeigt, also das Chart ist dann leer und zeigt gar keine Kurve/Daten. "daysAgo": 0 liefert alle vorherigen Tage, "daysAgo": 1 liefert den Graph für gestern.
{ "template": "chart", "name": "Klima Draussen", "dashboard": true, "sortby": 10, "setup": { "status": { "bar": ["temperature:30:100:error", "temperature:25:75:warning","temperature:10:50:success", "temperature::25:info"],"error": []}, "info": { "mid1": ["temperature::Aktuell: %n.1 °C:mdi-thermometer"] }, "daysAgo": 1}, "chartDef": ["myDbLog:(Temp_Aussen:temperature):Temperatur:°C::::::2","myDbLog:(Temp_Aussen:humidity):Feuchtigkeit: %:secondary:::::2"] }
Hallo,
das ist mir auch schon aufgefallen. Ich habe das was kaputt programmiert. ::)
Werde kurzfristig ein Hotfix fertig machen.
daysAgo = 0 sollte dann wieder den aktuellen Tag liefern.
Zitat von: jemu75 am 12 März 2022, 19:21:32
Hallo,
das ist mir auch schon aufgefallen. Ich habe das was kaputt programmiert. ::)
Werde kurzfristig ein Hotfix fertig machen.
daysAgo = 0 sollte dann wieder den aktuellen Tag liefern.
Release 3.30.1 wird gleich freigegeben. :)
Hallo Jens,
vielen Dank, funktioniert leider nicht, die Charts zeigen bei "daysAgo" = 0 als auch bei "daysAgo" = 0.5 nichts an. Sowohl unter Chrome als auch auf dem iPad / iPhone. Die Achsen sind leer. Siehe Bild.
Beste Grüsse!
appOptions
{ "template": "chart", "name": "Kühlschrank", "dashboard": true, "sortby": 1, "setup": { "status": { "bar": ["temperature_avg:10:100:error", "temperature_avg:7.5:75:warning","temperature_avg:6.5:0:info","temperature_avg:6:25:info","temperature_avg:5:50:info","temperature_avg:4:75:info","temperature_avg:2:100:info"],"error": []}, "info": { "mid1": ["temperature::Aktuell: %n.1 °C:mdi-thermometer"], "right1": ["temperature_avg::Aktuell Avg: %n.1 °C:mdi-thermometer"] }, "daysAgo": 0, "size": "col-12 col-sm-6 col-md-4 col-lg-4" }, "chartDef": ["myDbLog:(TempDiff1_T1:temperature):Temperatur:°C:::1:9:line:2:","myDbLog:(TempDiff1_T1:temperature_avg):Average:°C:secondary::1:9:line:2:"] }
Zitat von: jemu75 am 12 März 2022, 12:52:52
Hallo Thorsten,
spontan sehe ich da drei Möglichkeiten
1) einen einfachen Switch, der abhängig vom aktuellen Status der Lüftungsanlage zum nächsten Status schaltet
2) über ein Dropdown (Parameter "menu")
3) über mehrere Ebenen, also je Ebene einen bestimmten Modus der Lüftungsanlage schalten
Schau die gern mal die Beispiele in der Dokumentation an. Je nach dem, was dir optisch am meisten zusagt, kannst du dich gern noch mal bzgl. Umsetzung einer der o.g. Varianten melden. :)
Prima, danke - ich schau mir das dann einmal an.
Wird denn die setList der fhem devices von fhemapp ausgewertet?
So ist mein device definiert:
{
"Arg":"du.kwl.stufe",
"Results": [
{
"Name":"du.kwl.stufe",
"PossibleSets":"Aus Stufe_1 Stufe_2 Stufe_3",
"PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userattr userReadings:textField-long verbose:0,1,2,3,4,5 disable disabledForIntervals readingList setExtensionsEvent:1,0 setList useSetExtensions event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading appOptions:textField-long DbLogExclude DbLogInclude DbLogValueFn:textField-long alexaName alexaProactiveEvents:1,0 alexaRoom cmdIcon devStateIcon devStateIcon:textField-long devStateStyle genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock,scene homebridgeMapping:textField-long icon sortby webCmd webCmdLabel:textField-long widgetOverride",
"Internals": {
"FUUID": "5c5e94b4-f33f-bcbf-72b3-ddcb4f3beea76993",
"NAME": "du.kwl.stufe",
"NR": "47",
"STATE": "Stufe_2",
"STILLDONETIME": "0",
"TYPE": "dummy"
},
"Readings": { "state": { "Value":"Stufe_2", "Time":"2022-03-14 05:30:42" } },
"Attributes": {
"DbLogInclude": "1",
"alias": "Lüfterstufe",
"devStateIcon": "Aus:vent_ventilation:Stufe_1 Stufe_1:vent_ventilation_level_1@lightblue:Stufe_2 Stufe_2:vent_ventilation_level_2@green:Stufe_3 Stufe_3:vent_ventilation_level_3@orange:Aus",
"group": "Bedienung",
"room": "Lueftung",
"setList": "Aus Stufe_1 Stufe_2 Stufe_3",
"userReadings": "kwl_stufe"
}
} ],
"totalResultsReturned":1
}
gruß,
Thorsten
Zitat von: thoweiss am 14 März 2022, 07:04:15
Prima, danke - ich schau mir das dann einmal an.
Wird denn die setList der fhem devices von fhemapp ausgewertet?
So ist mein device definiert:
{
"Arg":"du.kwl.stufe",
"Results": [
{
"Name":"du.kwl.stufe",
"PossibleSets":"Aus Stufe_1 Stufe_2 Stufe_3",
"PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userattr userReadings:textField-long verbose:0,1,2,3,4,5 disable disabledForIntervals readingList setExtensionsEvent:1,0 setList useSetExtensions event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading appOptions:textField-long DbLogExclude DbLogInclude DbLogValueFn:textField-long alexaName alexaProactiveEvents:1,0 alexaRoom cmdIcon devStateIcon devStateIcon:textField-long devStateStyle genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock,scene homebridgeMapping:textField-long icon sortby webCmd webCmdLabel:textField-long widgetOverride",
"Internals": {
"FUUID": "5c5e94b4-f33f-bcbf-72b3-ddcb4f3beea76993",
"NAME": "du.kwl.stufe",
"NR": "47",
"STATE": "Stufe_2",
"STILLDONETIME": "0",
"TYPE": "dummy"
},
"Readings": { "state": { "Value":"Stufe_2", "Time":"2022-03-14 05:30:42" } },
"Attributes": {
"DbLogInclude": "1",
"alias": "Lüfterstufe",
"devStateIcon": "Aus:vent_ventilation:Stufe_1 Stufe_1:vent_ventilation_level_1@lightblue:Stufe_2 Stufe_2:vent_ventilation_level_2@green:Stufe_3 Stufe_3:vent_ventilation_level_3@orange:Aus",
"group": "Bedienung",
"room": "Lueftung",
"setList": "Aus Stufe_1 Stufe_2 Stufe_3",
"userReadings": "kwl_stufe"
}
} ],
"totalResultsReturned":1
}
gruß,
Thorsten
Guten Morgen,
setlist wird bisher leider nicht unterstützt.
Beste Grüße
Jens
Zitat von: Jamo am 13 März 2022, 20:05:24
Hallo Jens,
vielen Dank, funktioniert leider nicht, die Charts zeigen bei "daysAgo" = 0 als auch bei "daysAgo" = 0.5 nichts an. Sowohl unter Chrome als auch auf dem iPad / iPhone. Die Achsen sind leer. Siehe Bild.
Beste Grüsse!
Versuch mal wie folgt:
"setup": {
"daysAgo": 0,
"daysTo": -1
}
LG Thomas
Hallo Thomas,
sieht gut aus, danke! Magic . . .
Woher wusstest Du das, "daysTo" steht nirgendwo in der Doku (unter https://github.com/jemu75/fhemApp#readme)
Danke, Jamo!
Zitat von: Jamo am 14 März 2022, 20:59:20
Hallo Thomas,
sieht gut aus, danke! Magic . . .
Woher wusstest Du das, "daysTo" steht nirgendwo in der Doku (unter https://github.com/jemu75/fhemApp#readme)
Danke, Jamo!
Nachdem es bei mir auch mit der neuen Version nicht geklappt hat, hab' ich mir den gestrigen Commit von Jens auf GitHub angesehen und bin dabei auf den zweiten Parameter gestoßen :)
https://github.com/jemu75/fhemApp/commit/878097fc7d919b46183b3ab835275051564c3331#diff-b1453067d42aaf66bc13ece8bd6eefad5b0db7f1a95881098c35a967edabcb6b (https://github.com/jemu75/fhemApp/commit/878097fc7d919b46183b3ab835275051564c3331#diff-b1453067d42aaf66bc13ece8bd6eefad5b0db7f1a95881098c35a967edabcb6b)
LG Thomas
Schlau! :)
Liebe Grüsse auch & danke nochmal!
Hallo Jamo und ThoTo,
ich hatte ja die Version 3.30.1 veröffentlicht und dort das Problem mit daysAgo im Template Chart behoben. Funktioniert das jetzt?
PS.: daysTo ergänze ich mal noch in der Doku. ;)
Hallo Jens,
ja funktioniert 1a - danke. Mit den Settings von Thomas daysAgo = 0 und daysTo = -1 (hier nochmal für alle in Codetags) habe ich genau das was ich brauche, also die Charts vom heutigen Tag.
"setup": {
"daysAgo": 0,
"daysTo": -1
}
Hallo,
bastel auch grade meine FhemAPP zusammen - bis jetzt gefällt mir das ganze sehr gut ;)
ich äusser einfach mal nen "Wunsch" und schau was kommt ...
Würde gern ein panel erstellen, indem die Fritzboxen und Repeater im Haus aufgeführt würden - da das Fritzbox Modul keinen echten "on|off" status liefert, würde ich als "status" gerne das vorhanden sein einer IP verwenden. Zusätzlich hätte ich bei der Hauptbox (Mesh) gerne die Möglichkeit die 3 WLAN (2,4G 5G Gast) schalten zu können ...
Überhaupt möglich? ^^
thx
Jens
Zitat von: draddy am 15 März 2022, 11:14:39
Hallo,
bastel auch grade meine FhemAPP zusammen - bis jetzt gefällt mir das ganze sehr gut ;)
ich äusser einfach mal nen "Wunsch" und schau was kommt ...
Würde gern ein panel erstellen, indem die Fritzboxen und Repeater im Haus aufgeführt würden - da das Fritzbox Modul keinen echten "on|off" status liefert, würde ich als "status" gerne das vorhanden sein einer IP verwenden. Zusätzlich hätte ich bei der Hauptbox (Mesh) gerne die Möglichkeit die 3 WLAN (2,4G 5G Gast) schalten zu können ...
Überhaupt möglich? ^^
thx
Jens
Hallo,
schön zu lesen, dass Du dich für
FHEMApp begeistert hast. :)
Die
FHEMApp ist generisch aufgebaut und somit sehr flexibel konfigurierbar. Leider ist die Doku dadurch auch recht umfangreich. ;)
Entscheidend für die Anzeige von Werten oder dem Schalten ist das jeweilige FHEM Device. D.h. alles was Du im FHEM Device siehst und schalten kannst, dass kannst du auch in
FHEMApp anzeigen bzw. schalten.
Zu Deiner Frage:Ja, du kannst deine "Fritz-Komponenten" in einem Panel darstellen. Wie oben schon geschrieben, ist die Voraussetzung, dass Du die Boxen, Repeater ect. in FHEM eingebunden hast.
Du könntest nun für jede "Fritzkomponente" ein PanelItem (eine Zeile im Panel) definieren.
Welche Möglichkeiten zur Anzeige von Werten und zum Schalten in PanelItems zur Verfügung stehen, ist in der Doku hier beschrieben:
https://github.com/jemu75/fhemApp#definition-von-panelitems (https://github.com/jemu75/fhemApp#definition-von-panelitems)
Vorgehensweise wäre nun also folgende:1) in einem FHEM Device (z.B. dummy oder structure) über appOptions ein Panel konfigurieren
2) in deinen FHEM Device(s) der "Fritzkomponente(n)" über appOptions das PanelItem konfigurieren
Ich hoffe damit erstmal einen Ansatz geliefert zu haben. :)
Melde Dich gern, wenn Du weiter Fragen hast.
hi,
nun, der Ansatz ist relativ klar, habe bereits Panel für Lichter z.B. gebaut aber da ists relativ simpel - pro licht ein Reading und ein Schalter xD
habe einen Dummy erstellt welcher das appOption fürs panel hat, aber stehe echt aufm schlauch aktuell was den rest betrifft :D
also wie bekomme ich jetzt A mehrere Schalter in ein Panelobjekt, wie kann ich am geschicktesten das vorhanden sein einer ip als "status on" werten? ... ^^
andere sache noch:
bin grade dabei charts zu machen ... mein log speichert power (watt) und kwh für ein shelly device, jedoch, wenn das device aus ist, wird kein power 0 wert geschrieben ... im chart sieht das jetzt so aus als wäre das device von 0 bis 6 uhr gelaufen - was aber nicht stimmt (z.b. mein Monitor)
bringe ich das irgendwie hin, dass wenn kein reading da ist, der graf 0 zeigt? oder muss ich mein log irgendwie so überarbeiten, das er auch 0 werte schreibt?
Zitat von: draddy am 15 März 2022, 16:37:54
hi,
nun, der Ansatz ist relativ klar, habe bereits Panel für Lichter z.B. gebaut aber da ists relativ simpel - pro licht ein Reading und ein Schalter xD
habe einen Dummy erstellt welcher das appOption fürs panel hat, aber stehe echt aufm schlauch aktuell was den rest betrifft :D
also wie bekomme ich jetzt A mehrere Schalter in ein Panelobjekt, wie kann ich am geschicktesten das vorhanden sein einer ip als "status on" werten? ... ^^
andere sache noch:
bin grade dabei charts zu machen ... mein log speichert power (watt) und kwh für ein shelly device, jedoch, wenn das device aus ist, wird kein power 0 wert geschrieben ... im chart sieht das jetzt so aus als wäre das device von 0 bis 6 uhr gelaufen - was aber nicht stimmt (z.b. mein Monitor)
bringe ich das irgendwie hin, dass wenn kein reading da ist, der graf 0 zeigt? oder muss ich mein log irgendwie so überarbeiten, das er auch 0 werte schreibt?
Lass uns mal der Reihe nach vorgehen.
Vorab ein paar Fragen
1) in welchem FHEM Device hast du das Panel zur Darstellung der "Fritz-Komponenten" konfiguriert? Bitte mal ein JsonList2 von dem Device hier anfügen
2) in welchem FHEM Device steht die IP, die du prüfen möchtest?
3) hast du das PanelItem zu Anzeige des Status schon konfiguriert? Wenn ja, bitte auch von diesem FHEM Device mal ein JsonList2 hier posten.
4) was steht in dem reading IP, wenn die Box nicht verbunden ist?
5) was möchtest du alles schalten?
moin,
ok, hoffe du meinst das mit JsonList2 ^^
dummy für das Panel
{
"Arg":"d_NetworkAPP",
"Results": [
{
"Name":"d_NetworkAPP",
"PossibleSets":" ",
"PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userattr userReadings:textField-long verbose:0,1,2,3,4,5 disable disabledForIntervals readingList setExtensionsEvent:1,0 setList useSetExtensions event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading cmdIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride appOptions:textField-long",
"Internals": {
"CFGFN": "",
"FUUID": "62305d7c-f33f-0d8f-807b-fd79e42d9c1d3f05",
"NAME": "d_NetworkAPP",
"NR": "33695",
"STATE": "???",
"TYPE": "dummy"
},
"Readings": { },
"Attributes": { "appOptions": "{\"template\": \"panel\", \"connected\": \n\u0009{\"FB Restart\":\"Shelly_FB\", \"FB6591\":\"FritzBox\", \"FB7490\":\"FritzBox2\", \"FR1200\":\"FritzRepeater1200\"},\n\"name\":\"Netzwerk\",\n\"home\":\"true\"\n}" }
} ],
"totalResultsReturned":1
}
eine der Fritzboxen (Heimnetz Geräte entfernt)
{
"Arg":"FritzBox2",
"Results": [
{
"Name":"FritzBox2",
"PossibleSets":"call checkAPIs:noArg diversity guestWlan:on,off password ring tam update:noArg wlan:on,off wlan2.4:on,off wlan5:on,off",
"PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userattr userReadings:textField-long verbose:0,1,2,3,4,5 allowShellCommand:0,1 allowTR064Command:0,1 boxUser disable:0,1 defaultCallerName defaultUploadDir forceTelnetConnection:0,1 fritzBoxIP INTERVAL m3uFileLocal m3uFileURL ringWithIntern:0,1,2 telnetUser telnetTimeOut useGuiHack:0,1 userTickets event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading cmdIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride appOptions:textField-long",
"Internals": {
"APICHECKED": "1",
"DEF": "192.168.177.3",
"FUUID": "621a32e6-f33f-0d8f-d887-3dd67e28d2ed4b01",
"FVERSION": "72_FRITZBOX.pm:0.221250/2020-06-06",
"HOST": "192.168.177.3",
"INTERVAL": "300",
"LUAQUERY": "1",
"M3U_LOCAL": "./www/images/FritzBox2.m3u",
"M3U_URL": "http://172.17.0.4:8088/fhem/images/FritzBox2.m3u",
"MODEL": "FRITZ!Box 7490",
"NAME": "FritzBox2",
"NR": "66",
"REMOTE": "1",
"SECPORT": "xxxxx",
"STATE": "1:on\n2:on\n3:on\n<br>\nOnline: 192.168.177.3",
"TELNET": "0",
"TR064": "1",
"TYPE": "FRITZBOX",
"WEBCM": "0"
},
"Readings": {
"alarm1": { "Value":"Wecker 1", "Time":"2022-03-15 19:30:46" },
"alarm1_state": { "Value":"off", "Time":"2022-03-15 19:30:46" },
"alarm1_target": { "Value":"FON 1", "Time":"2022-03-15 19:30:46" },
"alarm1_time": { "Value":"00:00", "Time":"2022-03-15 19:30:46" },
"alarm1_wdays": { "Value":"daily", "Time":"2022-03-15 19:30:46" },
"alarm2": { "Value":"Wecker 2", "Time":"2022-03-15 19:30:46" },
"alarm2_state": { "Value":"off", "Time":"2022-03-15 19:30:46" },
"alarm2_target": { "Value":"FON 1", "Time":"2022-03-15 19:30:46" },
"alarm2_time": { "Value":"00:00", "Time":"2022-03-15 19:30:46" },
"alarm2_wdays": { "Value":"daily", "Time":"2022-03-15 19:30:46" },
"alarm3": { "Value":"Wecker 3", "Time":"2022-03-15 19:30:46" },
"alarm3_state": { "Value":"off", "Time":"2022-03-15 19:30:46" },
"alarm3_target": { "Value":"FON 1", "Time":"2022-03-15 19:30:46" },
"alarm3_time": { "Value":"00:00", "Time":"2022-03-15 19:30:46" },
"alarm3_wdays": { "Value":"daily", "Time":"2022-03-15 19:30:46" },
"box_connect": { "Value":"5", "Time":"2022-03-15 19:30:46" },
"box_cpuTemp": { "Value":"51", "Time":"2022-03-15 19:30:46" },
"box_dect": { "Value":"on", "Time":"2022-03-15 19:30:46" },
"box_fwVersion": { "Value":"113.07.29", "Time":"2022-03-15 19:30:46" },
"box_guestWlan": { "Value":"on", "Time":"2022-03-15 19:30:46" },
"box_guestWlanCount": { "Value":"0", "Time":"2022-03-15 19:30:46" },
"box_guestWlanRemain": { "Value":"-1", "Time":"2022-03-15 19:30:46" },
"box_ipExtern": { "Value":"192.168.177.3", "Time":"2022-03-15 19:30:46" },
"box_model": { "Value":"FRITZ!Box 7490 [avm]", "Time":"2022-03-14 11:20:35" },
"box_moh": { "Value":"default", "Time":"2022-03-15 19:30:46" },
"box_powerRate": { "Value":"46", "Time":"2022-03-15 19:30:46" },
"box_rateDown": { "Value":"0.000", "Time":"2022-03-15 19:30:46" },
"box_rateUp": { "Value":"0.000", "Time":"2022-03-15 19:30:46" },
"box_stdDialPort": { "Value":"dect1", "Time":"2022-03-15 19:30:46" },
"box_tr064": { "Value":"on", "Time":"2022-03-15 19:30:46" },
"box_tr069": { "Value":"off", "Time":"2022-03-15 19:30:46" },
"box_wlanCount": { "Value":"14", "Time":"2022-03-15 19:30:46" },
"box_wlan_2.4GHz": { "Value":"on", "Time":"2022-03-15 19:30:46" },
"box_wlan_5GHz": { "Value":"on", "Time":"2022-03-15 19:30:46" },
"dect1": { "Value":"Jens", "Time":"2022-03-15 19:30:46" },
"dect1_fwVersion": { "Value":"0.00", "Time":"2022-03-15 19:30:46" },
"dect1_intRingTone": { "Value":"HandsetDefault", "Time":"2022-03-15 19:30:46" },
"dect1_intern": { "Value":"610", "Time":"2022-03-15 19:30:46" },
"dect1_manufacturer": { "Value":"Siemens", "Time":"2022-03-15 19:30:46" },
"dect1_model": { "Value":"0x00", "Time":"2022-03-15 19:30:46" },
"dect2": { "Value":"Alex", "Time":"2022-03-15 19:30:46" },
"dect2_fwVersion": { "Value":"0.00", "Time":"2022-03-15 19:30:46" },
"dect2_intRingTone": { "Value":"HandsetDefault", "Time":"2022-03-15 19:30:46" },
"dect2_intern": { "Value":"611", "Time":"2022-03-15 19:30:46" },
"dect2_manufacturer": { "Value":"Siemens", "Time":"2022-03-15 19:30:46" },
"dect2_model": { "Value":"0x00", "Time":"2022-03-15 19:30:46" },
"gsm_internet": { "Value":"0", "Time":"2022-03-15 19:30:46" },
"lastReadout": { "Value":"473 values captured in 2.00 s", "Time":"2022-03-15 19:30:46" },
"state": { "Value":"WLAN: on gWLAN: on", "Time":"2022-03-15 19:30:46" },
"tam1": { "Value":"Anrufbeantworter", "Time":"2022-03-15 19:30:46" },
"tam1_newMsg": { "Value":"0", "Time":"2022-03-15 19:30:46" },
"tam1_oldMsg": { "Value":"0", "Time":"2022-03-15 19:30:46" },
"tam1_state": { "Value":"off", "Time":"2022-03-15 19:30:46" },
"user01": { "Value":"(guest)", "Time":"2022-03-15 19:30:46" },
"user01_thisMonthTime": { "Value":"0:00", "Time":"2022-03-15 19:30:46" },
"user01_todaySeconds": { "Value":"0", "Time":"2022-03-15 19:30:46" },
"user01_todayTime": { "Value":"0:00", "Time":"2022-03-15 19:30:46" },
"user01_type": { "Value":"Guest", "Time":"2022-03-15 19:30:46" },
"userTicket01": { "Value":"519969", "Time":"2022-03-15 19:30:46" }
},
"Attributes": {
"alias": "Fritzbox 7490",
"boxUser": "fritz7538",
"devStateIcon": "1.on:wifi-2.4G@green:wlan2.4+off 1.off:wifi-2.4G@red:wlan2.4+on \n2.on:wifi-5G@green:wlan5+off 2.off:wifi-5G@red:wlan5+on \n3.on:wifi-Gast@green:guestWlan+off 3.off:wifi-Gast@red:guestWlan+on",
"devStateStyle": "style=\"text-align:right;;",
"icon": "it_FritzBox@red",
"room": "Devices->Network",
"sortby": "2",
"stateFormat": "1:box_wlan_2.4GHz\n2:box_wlan_5GHz\n3:box_guestWlan\n<br>\nOnline: box_ipExtern"
}
} ],
"totalResultsReturned":1
}
gute idee wegen IP check ... passiert leider nix - sprich wenn ich netzwerkkabel rausnehm und box damit nicht mehr erreichbar ist, kommt nur log eintrag das sie nicht erreichbar ist ... also - check mittels ip ist wohl nix ^^
panelitem eintrag im device habe ich noch nicht, (wieder gelöscht weil nicht weiter gekommen ^^)
{
"template": "switch",
"name": "FB 7490",
"room": "Netzwerk",
"panel": {
"status": ["state:'WLAN: off'::0", "state:'WLAN: on'::100"],
"btn": ["state:on:mdi-lightbulb-on", "state:off:mdi-lightbulb-outline"],
"click": ["state:off:on", "state:on:off"]
}
}
das war der versuch meine "standard vorlage" bissl anzupassen ...
Wunschliste
- Status anzeige für die Fritzboxen (on|off) 2x FB 1x Repeater
- Möglichkeit WLAN(s) an und aus zuschalten (2,4G 5G Gast) nach möglichkeit in einer "zeile" des Panels - eventuell menü?
der aufgeführte FB Shelly kann ignoriert werden, dieser hängt an der Hauptbox mit "auto on nach 30 sekunden" um einen Fritzbox üblichen "nehmen sie das Gerät mal 30 Sekunden vom Strom" durch führen zu können :D
hoffe das bringt uns irgendwie weiter ;)
Zitat von: draddy am 15 März 2022, 11:14:39
Hallo,
....Würde gern ein panel erstellen, indem die Fritzboxen und Repeater im Haus aufgeführt würden - da das Fritzbox Modul keinen echten "on|off" status liefert, würde ich als "status" gerne das vorhanden sein einer IP verwenden. Zusätzlich hätte ich bei der Hauptbox (Mesh) gerne die Möglichkeit die 3 WLAN (2,4G 5G Gast) schalten zu können ...
Hallo Draddy,
ich habe so was in der Art schon mal gemacht, mit einem Panel, wo ich die FB und einen DVBc Repeater ins Panel eingebunden habe:
Unten das Bild vom Panel mit dem Menue für die verschiedenen Wlan on/off Optionen.
Weil der Repeater und der Repeater im Mesh sind, wird das Repeater WLAN immer so wie das Master FB device geschalten, deswegen habe ich da als Eintrag "-FBox & FRep -" drüber geschrieben. (Das AutoOff ist hier für Dich ohne Belang).
Meine Lösung ist:
1) Ein neues Reading fhemAppState für die FritzBox, das sieht so aus
fhemAppState 5:on 2.4:on Gast:on AutoOff:on
2) Die sub und das notify dazu, die das fhemAppState reading im Device FritzBox erzeugt:
defmod FritzBox_n notify F ritzBox:box_guestWlan:.*|FritzBox:box_wlan_2.4GHz:.*|FritzBox:box_wlan_5GHz:.* {myFritzBox_n()}
sub myFritzBox_n {
my $wlan5 = ReadingsVal($NAME,'box_wlan_5GHz','nA');
my $wlan2 = ReadingsVal($NAME,'box_wlan_2.4GHz','nA');
my $wlang = ReadingsVal($NAME,'box_guestWlan','nA');
my $WLAutoOff = ReadingsVal('WLANAutoOff','state','nA');
fhem ("sleep 0.5 sleep_FritzBox_n;setreading FritzBox fhemAppState ".'5:'.$wlan5.' 2.4:'.$wlan2.' Gast:'.$wlang.' AutoOff:'.$WLAutoOff);}
Das attr FritzBox appOptions dazu:
attr FritzBox appOptions { "name": "FritzBox", "panel": { "status": [
"fhemAppState:.*on.*on.*on.*:%s:100:success",
"fhemAppState:.*off.*off.*off.*:%s:0:success",
"fhemAppState:.*on.*off.*off.*:%s:33:info",
"fhemAppState:.*off.*on.*off.*:%s:33:info",
"fhemAppState:.*off.*off.*on.*:%s:33:error",
"fhemAppState:.*on.*on.*off.*:%s:66:info",
"fhemAppState:.*on.*off.*on.*:%s:66:warning",
"fhemAppState:.*off.*on.*on.*:%s:66:warning"], "btn": ["state:WLAN..off.gWLAN..off:mdi-toggle-switch-off-outline","state::mdi-toggle-switch"],
"menu": [" - FBox & FRep - :","AutoOff on:set WLANAutoOff on","AutoOff Off:set WLANAutoOff off","Wlan On:set FritzBox wlan on","Wlan Off:set FritzBox wlan off",
"gWlan On:set FritzBox guestWlan on","gWlan Off:set FritzBox guestWlan off","Wlan 5 On:set FritzBox wlan5 on","Wlan 5 Off:set FritzBox wlan5 off",
"Wlan 2.4 On:set FritzBox wlan2.4 on","Wlan 2.4 Off:set FritzBox wlan2.4 off"] }}
Je nachdem wieviel "WLAN angeschaltet ist", desto länger ist der Staus Bar.
Das Panel dazu:
defmod panelInternet dummy
attr panelInternet alias Internet
attr panelInternet appOptions { "template": "panel", "name": "Internet", "home": true, "dashboard": false, "group": "Arbeit", "sortby": 10, "connected": { "FBx": "FritzBox", "SDVBc": "Schalter_DVBc", . . . . . . . . .. .
Zitat von: draddy am 15 März 2022, 19:51:05
moin,
...gute idee wegen IP check ... passiert leider nix - sprich wenn ich netzwerkkabel rausnehm und box damit nicht mehr erreichbar ist, kommt nur log eintrag das sie nicht erreichbar ist ... also - check mittels ip ist wohl nix ^^
Falls Du checken willst, ob die FB mit dem Internet verbunden ist, gibt es hier https://forum.fhem.de/index.php/topic,124986.msg1195753.html#msg1195753 Lösungsansetze, die auch greifen, falls der eigene DNS Server wie AdGuard oder PiHole ausgefallen ist. Dafür könnte man einfach den fhemAppState von oben erweitern.
moin,
nein mit der IP war eigentlich nur die idee irgendeine art von "status" zu bekommen, hatte, ohne testen, die hoffnung das ip auf "no ip" oder so springt, wenn die fritzbox nicht erreichbar ist ...
für den rest danke ich dir erstmal! sieht schonmal so aus wie ich mir das vorgestellt habe ;)
das auto off denke ich bezieht sich auf das Gast Wlan auto off? - kann ich das einfach raus schmeissen im notify und menü oder muss ich im fhemAppState bereich von appOptions auch noch was beachten?
ich geh mal basteln ;)
soo, also, das hat sehr gut geklappt!
habe einfach das autowlanoff zeugs rausgeschmissen ...
gibts jetzt noch ne quick%dirty methode nen status für fritzbox 2 und repeater zu bekommen? für die beiden reicht es vollkommen aus, wenn der status "on" ist wenn box|repeater da ist, bzw. off, wenn sie nicht da ist (offline, netzwerkkabel getrennt, kein strom was auch immer)
thx
Jens
Zitat von: draddy am 16 März 2022, 00:05:57
...gibts jetzt noch ne quick%dirty methode nen status für fritzbox 2 und repeater zu bekommen? für die beiden reicht es vollkommen aus, wenn der status "on" ist wenn box|repeater da ist, bzw. off, wenn sie nicht da ist (offline, netzwerkkabel getrennt, kein strom was auch immer)
Hallo Jens, suchst Du jetzt 1) eine Möglichkeit in fhem, um den status zu bekommen (und wie Du das in fhem einbindest weisst Du dann selber), oder 2) was um den Status in deine fhemApp reinzubekommen?
1) wäre presence mit lan-ping übe die IP adresse deiner fritzbox 2 und repeater
2) Für das presence device müsstest Du z.B. einfach den state (present/absent) in fhemApp abbilden
Grüsse!
also in FHEM habe ich die 2. Box und den Repeater auch über das Fritzbox modul drin ...
dem modul fehlt eben, wie schonmal gesagt, einfach ein reading alla "is online" oder so, was sich ändert, wenn eben nicht online ist ...
wie würde das mit ping innerhalb von fhem klappen? weil, wenn ich das irgendwie in das jeweilige device bekomme und dann als reading speicher, hätte ich ja für FHEMAPP auch gleich was ich brauche.
Weil ja auch die Fritzbox selber presence/absence bereitstellt, sähe eine alternative Lösung so aus:
1) In deiner ersten Fritzbox (die Haupt-FB) folgende Userreadings machen. Dabei nehme ich an, das deine FB2 über LAN mit der FritzBox verbunden ist, dein Repeater über WLAN. Beide können dazu noch über einen Schalter an- und ausgeschaltet werden. Der Schalter hat ein Reading 'state' das 'on' oder 'off' ist. Falls keine Schalter vorhanden, einfach z.B das ,'Schalter_FB2' und/oder ,'Schalter_Repeater' weglassen.
attr FritzBox userReadings
Presence_FritzBox2 {checkMACpresent($name,'FB:ZW:EI:MC:AD:DR','LAN','Schalter_FB2')},
Presence_Repeater {checkMACpresent($name,'RE:PE:AT:MC:AD:DR','WLAN','Schalter_Repeater')}
2) folgende Sub in deine 99_MyUtils.pm reinkopieren:
################################################################################
### FB Lan Check mit Schalter, wenn Schalter aus -> absent ###
### function {checkMACpresent($name,'DI:EM:AC:AD:DR:ES','LAN oder WLAN oder gWLAN','Schalter')}###
################################################################################
sub checkMACpresent {
my $sub = 'checkMACpresent';
my $device = shift // return "Error, $sub: we need the devicename as parameter!";
my $MAC = shift // return "Error, $sub: we need MAC as parameter!";
my $NET = shift // return "Error, $sub: we need WLAN or WLANg or LAN as parameter!";
my $Switch = shift // 'noSwitch';
my $returnNum = shift // 0;
my $ret = 'absent';
my $retNum = 0;
my $hash = $defs{$device};
my $FBState = $hash->{READINGS}{'state'}{VAL};
my $Switchstate = ReadingsVal($Switch,'state','off');
$Switchstate = $Switch eq 'noSwitch'?'on':$Switchstate;
#Log 3, "[$sub] D=$device, N=$NET, $ret=ret, returnNum=$returnNum, Switchstate=$Switchstate, FBS=$FBState, $MAC";
if ($Switchstate eq 'on' && $FBState ne 'disabled') {
$MAC =~ tr/:/_/;
$MAC = 'mac_'.uc($MAC);
my $StatusMac = defined($hash->{READINGS}{$MAC})?$hash->{READINGS}{$MAC}{VAL}:'inactive';
if ($StatusMac eq 'inactive') {} #Log 3, "[$sub] LAN or WLAN StatusMac inactive oder Schalter aus, reading does not exist";
elsif ($NET eq 'LAN') {
if ($StatusMac =~ /(.*)s, 0/) {} #Log 3, "[$sub] LAN StatusMac 0 MB/s";
else {$ret = 'present';$retNum = 1} #Log 3, "[$sub] LAN Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.";
}
elsif ($NET eq 'WLAN') {
my $WlanState = $hash->{READINGS}{'wlanAny'}{VAL};
if ($WlanState eq 'on') {
if ($StatusMac =~ /WLAN,.0.\/.0.Mbit.s.*/) {$ret = 'present';$retNum = 1} # Dieser Zweig testet auf "<geraetename> (WLAN, 0 / 0 Mbit/s, 0)"
elsif ($StatusMac =~ /.*\(WLAN.*/) {$ret = 'present';$retNum = 1} #Log 3, "[$sub] WLAN Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.";
}
}
elsif ($NET eq 'WLANg') {
my $WlanGState = $hash->{READINGS}{'box_guestWlan'}{VAL};
if ($WlanGState eq 'on') {
if ($StatusMac =~ /gWLAN,.0.\/.0.Mbit.s.*/) {$ret = 'present';$retNum = 1} # Dieser Zweig testet auf "<geraetename> (gWLAN, 0 / 0 Mbit/s, 0)"
elsif ($StatusMac =~ /.*\(gWLAN.*/) {$ret = 'present';$retNum = 1} #Log 3, "[$sub] gWLAN Rückgabewert ist nicht "inactive", also ist das Gerät am Netzwerk angemeldet.";
}
}
}
if ($returnNum) {return $retNum;} else {return $ret;}
}
Damit bekommst Du in deiner HauptFritzbox zwei neue Readings für deinen Repeater und FB2, mit absence/presence. Das kannst Du dann aber auch noch ändern wenn Dir presence/absence nicht gefällt. Die Lösung ist an einem FHEM Wiki Artikel angelehnt, und ein bischen erweitert. Die MAC adressen musst Du entsprechend anpassen.
Das presence/absence kannst Du Dir dann wieder in dein Panel als state oder sonstwas holen.
PS: Das gehört aber nicht in dieses FHEMApp forum.
PS2: Das absence/presence ändert sich mit INTERVAL, das in deiner HauptFritzbox als attr INTERVAL gesetzt ist (also wie oft sich die FB readings aktualisieren.)
hi, dank dir,
habe noch ein wenig rumprobiert, das Reading "lastReadout" ist "verlässlich" wenn die Box / Repeater nicht erreichbar ist.
habe daraus jetzt das userReading "isON" gebaut ...
isON {if (ReadingsVal($name,"lastReadout","") eq "500 Can't connect to 192.168.177.3:80 (No route to host)") {return 0} elsif (ReadingsVal($name,"lastReadout","") eq "Didn't get a session ID") {return 0} else {return 1}}
[code]
sieht nicht gaaanz so elegant aus, klappt aber ;)
nach ca 10 minuten gehts eben auf "Didn't get a session ID" - darum habe ich das lange 500er auch mit reingenommen, einzig "unschön" ist, das man hier natürlich die IP anpassen muss ... aber gut, macht man einmal pro Gerät.
gruss
Jens
Hallo Jens,
Du kannst statt eq den Match-Operator verwenden und die IP-Adresse durch Wildcards ersetzen. Dann wird es allgemeiner.
Viele Grüße
Boris
mächtiges bada bäng ;D
danke Boris, der ist gut!
isON {if (ReadingsVal($name,"lastReadout","") =~ /values captured in/) {return 1} else {return 0}}
so kann ich auf den gleichbleibenden teil des positiven readings gehen, und unterstellen "wenn du keine werte bekommst, bist du nicht da" ;)
gruss
Jens
leserlicher (ungetestet):
isON { ReadingsVal($name,"lastReadout","") =~ /values captured in/ ? 1 : 0 }
Hallo alle Mitleser,
Gedanken eines Moderators:
Zu ein paar Modulen bilden sie Megathreads und die sind für jemanden, der erst neu anfängt, sich mit dem Modul zu beschäftigen, nicht wirklich brauchbar. Und die Abonennten der Megathreads müssen/dürfen alles mitlesen, ob sie das aktuelle Thema nun interessiert oder nicht.
Jetzt haben wir ein eigenes Board für FHEMapp. Wäre es da nicht sinnvoller, für FHEMapp zu der Regel "1 Thema - 1 Thread" zu wechseln und neue Threads für neues Thema zu eröffnen?
Und hier abzuschließen?
Viele Grüße
Boris
Zitat von: Dr. Boris Neubert am 17 März 2022, 09:09:28
Hallo alle Mitleser,
Gedanken eines Moderators:
Zu ein paar Modulen bilden sie Megathreads und die sind für jemanden, der erst neu anfängt, sich mit dem Modul zu beschäftigen, nicht wirklich brauchbar. Und die Abonennten der Megathreads müssen/dürfen alles mitlesen, ob sie das aktuelle Thema nun interessiert oder nicht.
Jetzt haben wir ein eigenes Board für FHEMapp. Wäre es da nicht sinnvoller, für FHEMapp zu der Regel "1 Thema - 1 Thread" zu wechseln und neue Threads für neues Thema zu eröffnen?
Und hier abzuschließen?
Viele Grüße
Boris
Hallo Boris,
ich unterstütze deinen Vorschlag. Hast du noch einen Tipp für die Umstellung? Sollte ich alle aktuellen Threads sperren? Wo könnte ich informieren, dass für jedes neue Thema bitte ein neuer Thread erstellt werden soll?
ik klink mir ma ein ...
würde hier in den dicken ein "Letztes Post" machen wo genau das drin steht und dann zu machen.
und ein kleiner Sticky im Unterforum "Bitte pro Thema einen Beitrag erstellen" ;)
Zitat von: draddy am 17 März 2022, 20:10:44
und ein kleiner Sticky im Unterforum "Bitte pro Thema einen Beitrag erstellen" ;)
Ja genau, oder sogar allgemeiner "Wie wird dieses Board benutzt?" mit Hinweisen, Tips, Links zu der FHEMApp-Doku usw. und dann anpinnen.
Für eine bessere Übersicht im Bereich FHEMApp habe ich diesen Thread geschlossen.
Bitte sucht zuerst nach Stichworten in diesem Forenbereich und antwortet im jeweiligen Thread, zu dem euer Thema passt