diff --git a/Egalware/html/index.html b/Egalware/html/index.html
new file mode 100644
index 0000000..58ba0e9
--- /dev/null
+++ b/Egalware/html/index.html
@@ -0,0 +1,5 @@
+
+
openHAB user provided static content
+Serve your own static html pages or resources from here. Files stored in the openHAB configuration subfolder html will be available through the HTTP server of openHAB, e.g. http://device-address:8080/static/image.png .
+Resources for sitemap elements (image, video,...) can also be provided though this folder.
+
diff --git a/Egalware/html/readme.txt b/Egalware/html/readme.txt
new file mode 100644
index 0000000..5eeeb99
--- /dev/null
+++ b/Egalware/html/readme.txt
@@ -0,0 +1,3 @@
+Serve your own static html pages or resources from here.
+Files stored in this folder will be available through the HTTP server of openHAB, e.g. "http://device-address:8080/static/image.png".
+Resources for sitemap elements (image, video,...) can also be provided though this folder.
diff --git a/Egalware/icons/classic/readme.txt b/Egalware/icons/classic/readme.txt
new file mode 100644
index 0000000..7fc793f
--- /dev/null
+++ b/Egalware/icons/classic/readme.txt
@@ -0,0 +1,6 @@
+Your additional icons go here.
+Icons can be provided as png (32x32) or preferably as svg files.
+ClassicUI and BasicUI can be configured to accept svg (default) or png icons.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/items.html#icons
diff --git a/Egalware/items/egalware.items b/Egalware/items/egalware.items
new file mode 100644
index 0000000..10d3c00
--- /dev/null
+++ b/Egalware/items/egalware.items
@@ -0,0 +1,279 @@
+/*---------------------- Elementi Astronomici ----------------------*/
+String Stagione { channel="astro:sun:local:season#name" }
+/*----------------------------------------------------------------------------*/
+
+/*---------------------- Elementi Clima, Daikin via MODBUS ----------------------*/
+Number GU120_CL "Clima Ufficio 120"
+Group:Switch:OR(ON, OFF) CL_Switch "Clima Attivi [(%d)]"
+Group:Number CL_Mode "Modalità Clima [%d]"
+Group:Number:AVG CL_Temp "Temp. Rilevata [%.1f °C]"
+Group:Number:AVG CL_Set "Temp. Impostata [%.1f °C]"
+Group:Number:AVG CL_Fan "Fan Speed"
+Number CL_GrpScale "Scala Temporale"
+Switch Heating_GU120_CL_C1_Switch "Ingresso" (CL_Switch) {channel="modbus:data:6cb6a78ae4:002f17d3e2:switch"}
+Number Heating_GU120_CL_C1_Temp "Temp Ingresso [%.1f °C]" (CL_Temp) {channel="modbus:data:7f20af572c:a9e7069c7c:number"}
+Number Heating_GU120_CL_C1_Set "Set Ingresso [%.1f °C]" (CL_Set) {channel="modbus:data:6cb6a78ae4:d016b44d6d:number"}
+Number Heating_GU120_CL_C1_Fan "Fan Ingresso" (CL_Fan) {channel="modbus:data:6cb6a78ae4:bd22b3944d:number"}
+Number Heating_GU120_CL_C1_Mode "Modo Ingresso [%s]" (CL_Mode) {channel="modbus:data:6cb6a78ae4:e6e67dfb58:number"}
+Switch Heating_GU120_CL_C2_Switch "Corridoio" (CL_Switch) {channel="modbus:data:25ff4e4854:abc8fe8acf:switch"}
+Number Heating_GU120_CL_C2_Temp "Temp Corridoio [%.1f °C]" (CL_Temp) {channel="modbus:data:25ff4e4854:9c21d13904:number"}
+Number Heating_GU120_CL_C2_Set "Set Corridoio [%.1f °C]" (CL_Set) {channel="modbus:data:25ff4e4854:4125b665e1:number"}
+Number Heating_GU120_CL_C2_Fan "Fan Corridoio" (CL_Fan) {channel="modbus:data:25ff4e4854:6f00c2d7c2:number"}
+Number Heating_GU120_CL_C2_Mode "Modo Corridoio [%s]" (CL_Mode) {channel="modbus:data:25ff4e4854:b382599920:number"}
+Switch Heating_GU120_CL_C3_Switch "Finestra" (CL_Switch) {channel="modbus:data:1d94db5831:a206ccc2d1:switch"}
+Number Heating_GU120_CL_C3_Temp "Temp Finestra [%.1f °C]" (CL_Temp) {channel="modbus:data:2a1822eb32:db7ce645ec:number"}
+Number Heating_GU120_CL_C3_Set "Set Finestra [%.1f °C]" (CL_Set) {channel="modbus:data:1d94db5831:1877b2eeac:number"}
+Number Heating_GU120_CL_C3_Fan "Fan Finestra" (CL_Fan) {channel="modbus:data:1d94db5831:965107cb2d:number"}
+Number Heating_GU120_CL_C3_Mode "Modo Finestra [%s]" (CL_Mode) {channel="modbus:data:1d94db5831:b9fdad4dbd:number"}
+Switch Heating_GU120_CL_C4_Switch "Uff Samuele" (CL_Switch) {channel="modbus:data:9c572c8b0d:aaad41b599:switch"}
+Number Heating_GU120_CL_C4_Temp "Temp Uff 04 Sam [%.1f °C]" (CL_Temp) {channel="modbus:data:102f2a9339:a684203978:number"}
+Number Heating_GU120_CL_C4_Set "Set Uff 04 [%.1f °C]" (CL_Set) {channel="modbus:data:9c572c8b0d:4de0ad7a18:number"}
+Number Heating_GU120_CL_C4_Fan "Fan Uff 04" (CL_Fan) {channel="modbus:data:9c572c8b0d:4aea01c2ba:number"}
+Number Heating_GU120_CL_C4_Mode "Modo Uff 04 [%s]" (CL_Mode) {channel="modbus:data:9c572c8b0d:076c837dc5:number"}
+Switch Heating_GU120_CL_C5_Switch "Uff Emmanuele" (CL_Switch) {channel="modbus:data:b84a9d28c9:2c0b2764b3:switch"}
+Number Heating_GU120_CL_C5_Temp "Temp Uff 05 Manu [%.1f °C]" (CL_Temp) {channel="modbus:data:54111f6432:92f68904d5:number"}
+Number Heating_GU120_CL_C5_Set "Set Uff 05 [%.1f °C]" (CL_Set) {channel="modbus:data:f6b8c93dfe:5e0ba61106:number"}
+Number Heating_GU120_CL_C5_Fan "Fan Uff 05" (CL_Fan) {channel="modbus:data:f6b8c93dfe:0bbc6da4ba:number"}
+Number Heating_GU120_CL_C5_Mode "Modo Uff 05 [%s]" (CL_Mode) {channel="modbus:data:f6b8c93dfe:8cf048aed5:number"}
+Switch Heating_GU100_CL_C6_Switch "Desk" (CL_Switch) {channel="modbus:data:32c34522e3:592d883bcc:switch"}
+Number Heating_GU100_CL_C6_Temp "Temp Desk [%.1f °C]" (CL_Temp) {channel="modbus:data:6dfb31b2d0:a9eda37f18:number"}
+Number Heating_GU100_CL_C6_Set "Set Desk [%.1f °C]" (CL_Set) {channel="modbus:data:32c34522e3:73c82709f7:number"}
+Number Heating_GU100_CL_C6_Fan "Fan Desk" (CL_Fan) {channel="modbus:data:32c34522e3:1d32219a9b:number"}
+Number Heating_GU100_CL_C6_Mode "Modo Desk [%s]" (CL_Mode) {channel="modbus:data:32c34522e3:5550465d50:number"}
+Switch Heating_GU100_CL_C7_Switch "OpenSpace" (CL_Switch) {channel="modbus:data:7b0ff8678f:852651bdfb:switch"}
+Number Heating_GU100_CL_C7_Temp "Temp OpenSpace [%.1f °C]" (CL_Temp) {channel="modbus:data:15a14761b1:043e67945d:number"}
+Number Heating_GU100_CL_C7_Set "Set OpenSpace [%.1f °C]" (CL_Set) {channel="modbus:data:7b0ff8678f:a7c13dd57d:number"}
+Number Heating_GU100_CL_C7_Fan "Fan OpenSpace" (CL_Fan) {channel="modbus:data:7b0ff8678f:c2ab3ee0e9:number"}
+Number Heating_GU100_CL_C7_Mode "Modo OpenSpace [%s]" (CL_Mode) {channel="modbus:data:7b0ff8678f:4386a86c96:number"}
+Switch Heating_GU100_CL_C8_Switch "Uff Dario" (CL_Switch) {channel="modbus:data:dfd1d14bf1:d3ddf221cd:switch"}
+Number Heating_GU100_CL_C8_Temp "Temp Uff 08 Dario [%.1f °C]" (CL_Temp) {channel="modbus:data:4da0c6beba:766d9bf2b9:number"}
+Number Heating_GU100_CL_C8_Set "Set Uff 08 [%.1f °C]" (CL_Set) {channel="modbus:data:dfd1d14bf1:ef7f18589e:number"}
+Number Heating_GU100_CL_C8_Fan "Fan Uff 08" (CL_Fan) {channel="modbus:data:dfd1d14bf1:93736ca830:number"}
+Number Heating_GU100_CL_C8_Mode "Modo Uff 08 [%s]" (CL_Mode) {channel="modbus:data:dfd1d14bf1:ab16eaba84:number"}
+Switch Heating_GU100_CL_C9_Switch "Sala Riunioni" (CL_Switch) {channel="modbus:data:629bd10994:b0f7f4184d:switch"}
+Number Heating_GU100_CL_C9_Temp "Temp Riunioni [%.1f °C]" (CL_Temp) {channel="modbus:data:2b1793ab97:b861d34fff:number"}
+Number Heating_GU100_CL_C9_Set "Set Riunioni [%.1f °C]" (CL_Set) {channel="modbus:data:629bd10994:d304255f1e:number"}
+Number Heating_GU100_CL_C9_Fan "Fan Riunioni" (CL_Fan) {channel="modbus:data:629bd10994:8be791e11a:number"}
+Number Heating_GU100_CL_C9_Mode "Modo Riunioni [%s]" (CL_Mode) {channel="modbus:data:629bd10994:7f619bd5fa:number"}
+
+
+/*----------------------------------------------------------------------------*/
+
+/*---------------------- Elementi Netatmo ----------------------*/
+Group GT_Netatmo "Temp Media [%.1f °C]"
+Group GT_Netatmo_temp "Temp Media [%.1f °C]"
+Group GT_Netatmo_Co2 "CO2 Media"
+Group GT_Netatmo_Noise "Rumore Medio"
+Group GT_Netatmo_Press "Pressione Media"
+Group GT_Netatmo_Hum "Umidità Media"
+Number GT_NetatmoInt
+Number GN_NET_ExtUff_Temp "Temp Esterno Ufficio [%.1f °C]" (GT_Netatmo,GT_Netatmo_temp) {channel="netatmo:NAModule1:1b6a7dea71:f01905e637:Temperature"}
+Number GN_NET_Server_Temp "Temp Sala Server [%.1f °C]" (GT_Netatmo,GT_Netatmo_temp) {channel="netatmo:NAModule4:1b6a7dea71:193e57e984:Temperature"}
+Number GN_NET_U120_Temp "Temp Ufficio 120 [%.1f °C]" (GT_Netatmo,GT_Netatmo_temp) {channel="netatmo:NAMain:1b6a7dea71:13aa60fd74:Temperature"}
+Number GN_NET_U100_Temp "Temp Ufficio 100 [%.1f °C]" (GT_Netatmo,GT_Netatmo_temp) {channel="netatmo:NAModule4:eb8cc662:030000079324:Temperature"}
+Number GN_NET_SS_Co2 "Sala Server CO2" (GT_Netatmo,GT_Netatmo_Co2) {channel="netatmo:NAModule4:1b6a7dea71:193e57e984:Co2"}
+Number GN_NET_U120_Co2 "Ufficio 120 CO2" (GT_Netatmo,GT_Netatmo_Co2) {channel="netatmo:NAMain:1b6a7dea71:13aa60fd74:Co2"}
+Number GN_NET_U100_Co2 "Ufficio 100 CO2" (GT_Netatmo,GT_Netatmo_Co2) {channel="netatmo:NAModule4:eb8cc662:030000079324:Co2"}
+Number GN_NET_SS_Hum "Sala Server Umidità" (GT_Netatmo,GT_Netatmo_Hum) {channel="netatmo:NAModule4:1b6a7dea71:193e57e984:Humidity"}
+Number GN_NET_U120_Hum "Ufficio 120 Umidità" (GT_Netatmo,GT_Netatmo_Hum) {channel="netatmo:NAMain:1b6a7dea71:13aa60fd74:Humidity"}
+Number GN_NET_U100_Hum "Ufficio 100 Umidità" (GT_Netatmo,GT_Netatmo_Hum) {channel="netatmo:NAModule4:eb8cc662:030000079324:Humidity"}
+Number GN_NET_SS_Noise "Sala Server Rumore" (GT_Netatmo,GT_Netatmo_Noise) {channel="netatmo:NAModule4:1b6a7dea71:193e57e984:Noise"}
+Number GN_NET_U120_Noise "Ufficio 120 Rumore" (GT_Netatmo,GT_Netatmo_Noise) {channel="netatmo:NAMain:1b6a7dea71:13aa60fd74:Noise"}
+Number GN_NET_U100_Noise "Ufficio 100 Rumore" (GT_Netatmo,GT_Netatmo_Noise) {channel="netatmo:NAModule4:eb8cc662:030000079324:Noise"}
+Number GN_NET_SS_Press "Sala Server Pressione" (GT_Netatmo,GT_Netatmo_Press) {channel="netatmo:NAModule4:1b6a7dea71:193e57e984:Pressure"}
+Number GN_NET_U120_Press "Ufficio 120 Pressione" (GT_Netatmo,GT_Netatmo_Press) {channel="netatmo:NAMain:1b6a7dea71:13aa60fd74:Pressure"}
+Number GN_NET_U100_Press "Ufficio 100 Pressione" (GT_Netatmo,GT_Netatmo_Press) {channel="netatmo:NAModule4:eb8cc662:030000079324:Pressure"}
+
+/*----------------------------------------------------------------------------*/
+
+
+
+
+/*---------------------- Elementi Impianto Fotovoltaico Fronius ----------------------*/
+// variabili originali
+Number Fn_FullLoadNeg "Carico totale istantanteo (-)" (gEN) {channel="fronius:powerinverter:636f11ae1d:169618635d:powerflowchannelpload"}
+Number Fn_PrelRete "(B) ↓ Da Rete [%.0f W]" (gEN) {channel="fronius:powerinverter:636f11ae1d:169618635d:powerflowchannelpgrid"}
+Number Fn_FromFV "(C) ↑ Da Fotovoltaico [%.0f W]" (gEN) {channel="fronius:powerinverter:636f11ae1d:169618635d:inverterdatachannelpac"}
+Number Fn_ProdFVDay "↑ Produzione gg [%.2f kWh]" (gEN) {channel="fronius:powerinverter:636f11ae1d:169618635d:inverterdatachanneldayenergy"}
+Number Fn_ProdFVYearProd "Prod. Anno" (gEN) {channel="fronius:powerinverter:636f11ae1d:169618635d:inverterdatachannelyear"}
+Number Fn_ProdFVTotProd "Prod. Totale" (gEN) {channel="fronius:powerinverter:636f11ae1d:169618635d:inverterdatachanneltotal"}
+// variabili calcolate/derivate
+Number Fn_FullLoadPos "(A) ↓ Impiego (B+C) [%.0f W]" (gEN)
+Number Fn_PrelReteDay "↓ Consumo gg [%.2f kWh]" (gEN)
+// variabili accessorie
+Number Fn_PrelReteNet "Prelievo grid istantaneo NETTO (>0)" (gEN)
+
+// indici per selezione
+Number FronPacInt
+Number FronDayEnInt
+Number FronYearEnInt
+Number FronTotEnInt
+Number FronGP
+Number FronLP
+
+
+// Group gEN "Energia" ["Energia"]
+// Number gEN_RTime "Istantanea [%.0f W]" (gEN) {channel="fronius:powerinverter:6c4376a1:inverterdatachannelpac"}
+// Number gEN_Day "Giornaliera" (gEN) {channel="fronius:powerinverter:6c4376a1:inverterdatachanneldayenergy"}
+
+// Group gEN_Realtime "Realtime" (gEN) ["Realtime"]
+// Group gEN_Day "Giorno" (gEN) ["Giorno"]
+// Group gEN_Month "Mese" (gEN) ["Mese"]
+// Group gEN_Year "Anno" (gEN) ["Anno"]
+
+/*----------------------------------------------------------------------------*/
+
+
+/*---------------------- Elementi Networking ----------------------*/
+// Group gNet
+// Group gNet_print "Printers" (gNet) ["Printers"]
+Number gNet_mobileChartSel
+Group:Switch:OR(ON, OFF) gNet_mobile "Presenze [(%d)]"
+
+Number gNet_Mobile_Sam "Mobile Sam" (gNet_mobile) ["Mobile"] {channel="network:pingdevice:9f536b87:online"}
+Switch GW {channel="network:pingdevice:gw:online"}
+Number:Time GWResponseTime {channel="network:pingdevice:gw:latency"}
+Switch SW10G {channel="network:pingdevice:sw10g:online"}
+Number:Time SW10GResponseTime {channel="network:pingdevice:sw10g:latency"}
+Switch Modem {channel="network:pingdevice:modem:online"}
+Number:Time ModemResponseTime {channel="network:pingdevice:modem:latency"}
+Switch GDns {channel="network:pingdevice:gdns:online"}
+Number:Time GDnsResponseTime {channel="network:pingdevice:gdns:latency"}
+Switch HV04 {channel="network:pingdevice:hv04:online"}
+Number:Time HV04ResponseTime {channel="network:pingdevice:hv04:latency"}
+Switch HV03 {channel="network:pingdevice:hv03:online"}
+Number:Time HV03ResponseTime {channel="network:pingdevice:hv03:latency"}
+String Speedtest_Running "Test running ... [%s]" {channel="network:speedtest:local:isRunning"}
+Number:Dimensionless Speedtest_Progress "Test progress [%d %unit%]" {channel="network:speedtest:local:progress"}
+Number:DataTransferRate Speedtest_ResultDown "Downlink [%.2f %unit%]" {channel="network:speedtest:local:rateDown"}
+Number:DataTransferRate Speedtest_ResultUp "Uplink [%.2f %unit%]" {channel="network:speedtest:local:rateUp"}
+DateTime Speedtest_Start "Test Start [%1$tH:%1$tM]" {channel="network:speedtest:local:testStart"}
+DateTime Speedtest_LUD "Timestamp [%1$tH:%1$tM]" {channel="network:speedtest:local:testEnd"}
+
+/*----------------------------------------------------------------------------*/
+
+
+// Group GF_Living "Living Room" (GU100_CL_) ["LivingRoom"]
+// Group GF_Kitchen "Kitchen" (GU100_CL_) ["Kitchen"]
+// Group GF_Toilet "Toilet" (GU100_CL_) ["Bathroom"] { synonyms="Toilets,WC,Restroom" }
+// Group GF_Corridor "Corridor" (GU100_CL_) ["Corridor"]
+
+// Group FF_Bath "Bathroom" (GU120_CL) ["Bathroom"]
+// Group FF_Office "Office" (GU120_CL) ["Room"] { synonyms="Study" }
+// Group FF_Son "Oliver's Room" (GU120_CL) ["Bedroom"] { synonyms="Oli's Room" }
+// Group FF_Daughter "Amelia's Room" (GU120_CL) ["Bedroom"] { synonyms="Amy's Room" }
+// Group FF_Bed "Bedroom" (GU120_CL) ["Bedroom"] { synonyms="Master Bedroom" }
+// Group FF_Corridor "Corridor" (GU120_CL) ["Corridor"]
+
+
+
+
+
+
+
+/* Lights */
+// Dimmer Light_GF_Living_Table "Table" (GF_Living, Lights) ["Light", "Lighting"]
+// Switch Light_GF_Corridor_Ceiling "Ceiling" (GF_Corridor, Lights) ["Light"]
+// Switch Light_GF_Kitchen_Ceiling "Ceiling" (GF_Kitchen, Lights) ["Light"]
+// Switch Light_GF_Kitchen_Table "Table" (GF_Kitchen, Lights) ["Light"]
+// Switch Light_GF_Corridor_Wardrobe "Wardrobe" (GF_Corridor, Lights) ["Light"]
+// Switch Light_GF_Toilet_Ceiling "Ceiling" (GF_Toilet, Lights) ["Light"]
+// Switch Light_GF_Toilet_Mirror "Mirror" (GF_Toilet, Lights) ["Light"]
+
+// Switch Light_FF_Bath_Ceiling "Ceiling" (FF_Bath, Lights) ["Light"]
+// Switch Light_FF_Bath_Mirror "Mirror" (FF_Bath, Lights) ["Light"]
+// Switch Light_FF_Corridor_Ceiling "Corridor" (FF_Corridor, Lights) ["Light"]
+// Switch Light_FF_Office_Ceiling "Ceiling" (FF_Office, Lights) ["Light"]
+// Switch Light_FF_Son_Ceiling "Ceiling" (FF_Son, Lights) ["Light"]
+// Switch Light_FF_Daughter_Ceiling "Ceiling" (FF_Daughter, Lights) ["Light"]
+// Switch Light_FF_Bed_Ceiling "Ceiling" (FF_Bed, Lights) ["Light"]
+
+// Switch Light_C_Corridor_Ceiling "Ceiling" (gC, Lights) ["Light"]
+// Switch Light_C_Staircase "Staircase" (gC, Lights) ["Light"]
+// Switch Light_C_Washing_Ceiling "Washing" (gC, Lights) ["Light"]
+// Switch Light_C_Workshop "Workshop" (gC, Lights) ["Light", "Lighting"]
+
+// Switch Light_Garden_Garage "Garage" (Garden, Lights) ["Light", "Lighting"]
+// Switch Light_Garden_Terrace "Terrace" (Garden, Lights) ["Light"]
+
+// /* Heating */
+// Switch Heating_GF_Corridor "Corridor" (GF_Corridor, Heating) ["HVAC"]
+// Switch Heating_GF_Toilet "Toilet" (GF_Toilet, Heating) ["HVAC"]
+// Switch Heating_GF_Living "Livingroom" (GF_Living, Heating) ["HVAC"]
+// Switch Heating_GF_Kitchen "Kitchen" (GF_Kitchen, Heating) ["HVAC"]
+
+// Switch Heating_FF_Bath "Bath" (FF_Bath, Heating) ["HVAC"]
+// Switch Heating_FF_Office "Office" (FF_Office, Heating) ["HVAC"]
+// Switch Heating_FF_Son "Oliver's Room" (FF_Son, Heating) ["HVAC"]
+// Switch Heating_FF_Daughter "Amelia's Room" (FF_Daughter, Heating) ["HVAC"]
+// Switch Heating_FF_Bed "Bedroom" (FF_Bed, Heating) ["HVAC"]
+
+// /* Rollershutters */
+// Rollershutter Shutter_GF_Toilet "Toilet" (GF_Toilet, Shutters) ["Blinds"]
+// Rollershutter Shutter_GF_Kitchen "Kitchen" (GF_Kitchen, Shutters) ["Blinds"]
+// Rollershutter Shutter_GF_Living "Livingroom" (GF_Living, Shutters) ["Blinds"]
+
+// Rollershutter Shutter_FF_Bed "Bedroom" (FF_Bed, Shutters) ["Blinds"]
+// Rollershutter Shutter_FF_Bath "Bath" (FF_Bath, Shutters) ["Blinds"]
+// Rollershutter Shutter_FF_Office_Window "Office Window" (FF_Office, Shutters) ["Blinds"]
+// Rollershutter Shutter_FF_Office_Door "Office Door" (FF_Office, Shutters) ["Blinds"]
+
+// Switch Shutter_all
+
+// /* Indoor Temperatures */
+// Number Temperature_GF_Corridor "Corridor [%.1f °C]" (Temperature, GF_Corridor) ["Temperature", "Measurement"]
+// Number Temperature_GF_Toilet "Toilet [%.1f °C]" (Temperature, GF_Toilet) ["Temperature", "Measurement"]
+// Number Temperature_GF_Living "Living Room [%.1f °C]" (Temperature, GF_Living) ["Temperature", "Measurement"]
+// Number Temperature_GF_Kitchen "Kitchen [%.1f °C]" (Temperature, GF_Kitchen, Thermostat) ["Temperature", "Measurement", "CurrentTemperature"]
+// Number Temperature_FF_Bath "Bath [%.1f °C]" (Temperature, FF_Bath) ["Temperature", "Measurement"]
+// Number Temperature_FF_Office "Office [%.1f °C]" (Temperature, FF_Office) ["Temperature", "Measurement"]
+// Number Temperature_FF_Son "Oliver's Room [%.1f °C]" (Temperature, FF_Son) ["Temperature", "Measurement"]
+// Number Temperature_FF_Daughter "Amelia's Room [%.1f °C]" (Temperature, FF_Daughter) ["Temperature", "Measurement"]
+// Number Temperature_FF_Bed "Bedroom [%.1f °C]" (Temperature, FF_Bed) ["Temperature", "Measurement"]
+
+// /* Windows */
+// Contact Window_GF_Frontdoor "Frontdoor [MAP(en.map):%s]" (GF_Corridor, Windows) ["FrontDoor"]
+// Contact Window_GF_Kitchen "Kitchen [MAP(en.map):%s]" (GF_Kitchen, Windows) ["Window"]
+// Contact Window_GF_Living "Terrace door [MAP(en.map):%s]" (GF_Living, Windows) ["Door"]
+// Contact Window_GF_Toilet "Toilet [MAP(en.map):%s]" (GF_Toilet, Windows) ["Window"]
+
+// Contact Window_FF_Bath "Bath [MAP(en.map):%s]" (FF_Bath, Windows) ["Window"]
+// Contact Window_FF_Bed "Bedroom [MAP(en.map):%s]" (FF_Bed, Windows) ["Window"]
+// Contact Window_FF_Office_Window "Office Window [MAP(en.map):%s]" (FF_Office, Windows) ["Window"]
+// Contact Window_FF_Office_Door "Balcony Door [MAP(en.map):%s]" (FF_Office, Windows) ["Door"]
+
+// Contact Garage_Door "Garage Door [MAP(en.map):%s]" (Garden, Windows) ["GarageDoor"]
+
+// Group Weather_Chart
+// Number Weather_Temperature "Outside Temperature [%.1f °C]" (Weather, Weather_Chart) { channel="yahooweather:weather:berlin:temperature" }
+// Number Weather_Temp_Max "Todays Maximum [%.1f °C]" (Weather, Weather_Chart)
+// Number Weather_Temp_Min "Todays Minimum [%.1f °C]" (Weather, Weather_Chart)
+// Number Weather_Chart_Period "Chart Period"
+// DateTime Weather_LastUpdate "Last Update [%1$ta %1$tR]"
+// Number:Angle Sun_Elevation "Sun Elevation" { channel = "astro:sun:home:position#elevation" }
+// Number:Angle Sun_Azimuth "Sun Azimuth" { channel = "astro:sun:home:position#azimuth" }
+// DateTime Sunrise_Time "Sunrise [%1$tH:%1$tM]" { channel = "astro:sun:home:rise#start" }
+// DateTime Sunset_Time "Sunset [%1$tH:%1$tM]" { channel = "astro:sun:home:set#start" }
+// Number:Angle Moon_Elevation "Moon Elevation" { channel = "astro:moon:home:position#elevation" }
+// Number:Angle Moon_Azimuth "Moon Azimuth" { channel = "astro:moon:home:position#azimuth" }
+// String Moon_Phase "Moon Phase" { channel = "astro:moon:home:phase#name" }
+
+// /* Demo items */
+// DateTime CurrentDate "Date [%1$tA, %1$td.%1$tm.%1$tY]" { channel="ntp:ntp:demo:dateTime" }
+// Switch DemoSwitch "Switch"
+// Dimmer DimmedLight "Dimmer [%d %%]"
+// Color RGBLight "RGB Light"
+// Rollershutter DemoShutter "Roller Shutter"
+// Dimmer DemoBlinds "Blinds [%d %%]"
+// Number Scene_General "Scene"
+// Number Radio_Station "Radio"
+// Dimmer Volume "Volume [%.1f %%]"
+// Location EgalwareLocation "Sede Egalware Seriate"
+// Number Wifi_Level "Wifi Level [%d/4]" (FF_Office)
+// String ImageURL "Image URL [%s]"
+
+// Group Thermostat "Thermostat" ["Thermostat"]
+// Dimmer Temperature_Setpoint "Temperature [%.1f °C]" (Thermostat) ["TargetTemperature", "Setpoint", "Temperature"] { habot="" [ control="knob", min=15, max=35, leftIcon="mdi-thermometer", leftInverted=true ] }
+// String Thermostat_Mode "Thermostat Mode [%s]" (Thermostat) ["homekit:HeatingCoolingMode", "Control"]
+
+// vim: syntax=Xtend
diff --git a/Egalware/items/readme.txt b/Egalware/items/readme.txt
new file mode 100644
index 0000000..b214510
--- /dev/null
+++ b/Egalware/items/readme.txt
@@ -0,0 +1,5 @@
+Your item definitions go here.
+All items files have to have the ".items" file extension and must follow a special syntax.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/items.html
diff --git a/Egalware/persistence/readme.txt b/Egalware/persistence/readme.txt
new file mode 100644
index 0000000..b1df35b
--- /dev/null
+++ b/Egalware/persistence/readme.txt
@@ -0,0 +1,5 @@
+Your persistence configuration goes here.
+All persistence files have to have the ".persist" file extension and must follow a special syntax.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/persistence.html
diff --git a/Egalware/persistence/rrd4j.persist b/Egalware/persistence/rrd4j.persist
new file mode 100644
index 0000000..e2c957b
--- /dev/null
+++ b/Egalware/persistence/rrd4j.persist
@@ -0,0 +1,26 @@
+// persistence strategies have a name and a definition and are referred to in the "Items" section
+Strategies {
+ // for rrd charts, we need a cron strategy
+ everyMinute : "0 * * * * ?"
+ everyHour : "0 0 * * * ?"
+ everyDay : "0 0 0 * * ?"
+ default = everyChange
+}
+
+Items {
+ // //* strategy = everyMinute, restoreOnStartup
+ // *OnOff, *SetPoint, *Temperatura, *Velocit* : strategy = everyChange, restoreOnStartup
+
+ // // let's only store temperature values in rrd
+ // Heating*,gEN*,Temperature*, *Temperatura, Weather_Chart*, Ufficio*, *Server, Esterno* : strategy = everyMinute, restoreOnStartup
+
+ // // Fotovoltaico!
+ // gEN_RTime : strategy = everyMinute, restoreOnStartup
+ // gEN_Day : strategy = everyHour, restoreOnStartup
+ // gEN_YearProd : strategy = everyDay, restoreOnStartup
+
+ // persist items on every change and every minute
+ *: strategy = everyChange, everyMinute, restoreOnStartup
+}
+
+// vim: syntax=Xtend
\ No newline at end of file
diff --git a/Egalware/rules/egalware.rules b/Egalware/rules/egalware.rules
new file mode 100644
index 0000000..b8fd3d0
--- /dev/null
+++ b/Egalware/rules/egalware.rules
@@ -0,0 +1,875 @@
+import java.util.Random
+
+var Timer timer = null
+val Random random = new Random()
+// val resList = newArrayList("640/480", "320/240", "480/360")
+// val urlList = newArrayList("https://www.fillmurray.com", "https://www.fillmurray.com/g",
+// "https://www.placecage.com", "https://www.placecage.com/c", "https://www.placecage.com/g")
+
+
+/**********************************************************************
+ * Rules x calcoli valori ENERGIA
+ **********************************************************************/
+rule "Fix Fronius FullLoad"
+when
+ Item Fn_FullLoadNeg changed
+then
+ if (Fn_FullLoadNeg.state instanceof Number) {
+ Fn_FullLoadPos.postUpdate((Fn_FullLoadNeg.state as Number) * -1)
+ } else {
+ Fn_FullLoadPos.postUpdate(Undefined) // or UNDEF on OH2
+ }
+end
+
+rule "Prelievo Rete Quotidiano (IN - FV)"
+when
+ Item Fn_PrelRete changed
+ //Time cron "0 * * * * *"
+then
+ // inizio creando variabile derivata del SOLO valore prelevato
+ if(Fn_PrelRete.state >= 0) {
+ Fn_PrelReteNet.postUpdate(Fn_PrelRete.state as Number)
+ }
+ else {
+ Fn_PrelReteNet.postUpdate(0)
+ }
+ //logInfo("Fn_PrelRete.rules", "Fn_PrelReteNet:{}", Fn_PrelReteNet.state)
+ // calcolo parametri delle ore cumulate giornaliere, del valore medio giornaliero
+ var double dayTime = (now.getMinute() as Number) / 60 + now.getHour()
+ //logInfo("Fn_PrelRete.rules", "inizio:{}, dayTime: {}", inizio, dayTime)
+
+ // var Number mediaGiorn = Fn_PrelRete.averageSince(now.withTimeAtStartOfDay).doubleValue
+ // logInfo("Fn_PrelRete.rules", "mediaGiorn: {}", mediaGiorn)
+
+ // var Number mediaGiornNet = Fn_PrelReteNet.averageSince(now.withTimeAtStartOfDay).doubleValue
+ var Number mediaGiornNet = Fn_PrelReteNet.averageSince(now.withHour(0).withMinute(0).withSecond(0)).doubleValue
+ // logInfo("Fn_PrelRete.rules", "mediaGiornNet: {}", mediaGiornNet)
+
+ // to-do: usare ALTRA media...
+ //var double kWh = mediaGiorn * dayTime / 1000
+ var double kWh = mediaGiornNet * dayTime / 1000
+ //logInfo("Fn_PrelRete.rules", "kWh:{}", kWh)
+ Fn_PrelReteDay.postUpdate(kWh)
+end
+
+/**********************************************************************
+ * Rules x automazione CLIMA ALWAYS
+ **********************************************************************/
+
+rule "Accensione mattino 7.40 uffici Samuele / Dario"
+when
+ Time cron "0 40 7 * * MON-SAT"
+then
+ Heating_GU120_CL_C4_Switch.sendCommand(ON)
+ Heating_GU100_CL_C8_Switch.sendCommand(ON)
+end
+
+rule "Accensione mattino 7.45 ufficio Emmanuele / Sala Riunioni"
+when
+ Time cron "0 45 7 * * MON-SAT"
+then
+ Heating_GU120_CL_C5_Switch.sendCommand(ON)
+ Heating_GU100_CL_C9_Switch.sendCommand(ON)
+end
+
+
+rule "Accensione mattino 7.50 finestra / OpenSpace"
+when
+ Time cron "0 50 7 * * MON-SAT"
+then
+ Heating_GU120_CL_C3_Switch.sendCommand(ON)
+ Heating_GU100_CL_C7_Switch.sendCommand(ON)
+end
+
+rule "Accensione mattino 8.00 desk / ingresso / corridoio"
+when
+ Time cron "0 0 8 * * MON-SAT"
+then
+ Heating_GU120_CL_C1_Switch.sendCommand(ON)
+ Heating_GU120_CL_C2_Switch.sendCommand(ON)
+ Heating_GU100_CL_C6_Switch.sendCommand(ON)
+end
+
+// rule "Accensione Impianto OGNI mattino 8.15 Standard (NO ufficio e sala riunioni)"
+// when
+// Time cron "0 15 8 * * MON-SAT"
+// then
+// Heating_GU120_CL_C1_Switch.sendCommand(ON)
+// Heating_GU120_CL_C2_Switch.sendCommand(ON)
+// Heating_GU120_CL_C3_Switch.sendCommand(ON)
+// Heating_GU120_CL_C4_Switch.sendCommand(ON)
+// Heating_GU120_CL_C5_Switch.sendCommand(ON)
+// Heating_GU100_CL_C6_Switch.sendCommand(ON)
+// Heating_GU100_CL_C7_Switch.sendCommand(ON)
+// Heating_GU100_CL_C8_Switch.sendCommand(ON)
+// Heating_GU100_CL_C9_Switch.sendCommand(ON)
+// end
+
+rule "Accensione Impianto OGNI mattino 8.30"
+when
+ Time cron "0 30 8 * * ?"
+then
+ Heating_GU120_CL_C1_Switch.sendCommand(ON)
+ Heating_GU120_CL_C2_Switch.sendCommand(ON)
+ Heating_GU120_CL_C3_Switch.sendCommand(ON)
+ Heating_GU120_CL_C4_Switch.sendCommand(ON)
+ Heating_GU120_CL_C5_Switch.sendCommand(ON)
+ Heating_GU100_CL_C6_Switch.sendCommand(ON)
+ Heating_GU100_CL_C7_Switch.sendCommand(ON)
+ Heating_GU100_CL_C8_Switch.sendCommand(ON)
+ Heating_GU100_CL_C9_Switch.sendCommand(ON)
+end
+
+// rule "Spegnimento Impianto OGNI pomeriggio 14.30 FERIE"
+// when
+// Time cron "0 30 14 * * ?"
+// then
+// Heating_GU120_CL_C1_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C2_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C3_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C4_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C5_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C6_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C7_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C8_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C9_Switch.sendCommand(OFF)
+// end
+// //-------------------------------------------------------------------------------
+
+
+// rule "Accensione Impianto OGNI mattino 8.30 SmartWorking"
+// when
+// Time cron "0 30 8 * * ?"
+// then
+// Heating_GU120_CL_C1_Switch.sendCommand(ON)
+// Heating_GU120_CL_C2_Switch.sendCommand(ON)
+// Heating_GU120_CL_C3_Switch.sendCommand(ON)
+// Heating_GU120_CL_C4_Switch.sendCommand(ON)
+// Heating_GU120_CL_C5_Switch.sendCommand(ON)
+// Heating_GU100_CL_C6_Switch.sendCommand(ON)
+// Heating_GU100_CL_C7_Switch.sendCommand(ON)
+// Heating_GU100_CL_C8_Switch.sendCommand(ON)
+// Heating_GU100_CL_C9_Switch.sendCommand(ON)
+// end
+
+// rule "Spegnimento Clima sabato-domenica pomeriggio 17:0"
+// when
+// Time cron "0 0 17 ? * SAT,SUN"
+// then
+// Heating_GU120_CL_C1_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C2_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C3_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C4_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C5_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C6_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C7_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C8_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C9_Switch.sendCommand(OFF)
+// end
+
+
+// rule "Spegnimento Clima OGNI sera 16:30 SmartWorking"
+// when
+// Time cron "0 30 16 * * ?"
+// then
+// Heating_GU120_CL_C1_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C2_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C3_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C4_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C5_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C6_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C7_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C8_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C9_Switch.sendCommand(OFF)
+// end
+
+// rule "Spegnimento Clima OGNI sera 19:00"
+// when
+// Time cron "0 0 19 * * ?"
+// then
+// Heating_GU120_CL_C1_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C2_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C3_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C4_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C5_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C6_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C7_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C8_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C9_Switch.sendCommand(OFF)
+// end
+
+rule "Spegnimento Clima OGNI sera 20:00"
+when
+ Time cron "0 0 20 * * ?"
+then
+ Heating_GU120_CL_C1_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C2_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C3_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C4_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C5_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C6_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C7_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C8_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C9_Switch.sendCommand(OFF)
+end
+
+// rule "Spegnimento Clima OGNI sera 20:30"
+// when
+// Time cron "0 30 20 * * ?"
+// then
+// Heating_GU120_CL_C1_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C2_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C3_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C4_Switch.sendCommand(OFF)
+// Heating_GU120_CL_C5_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C6_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C7_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C8_Switch.sendCommand(OFF)
+// Heating_GU100_CL_C9_Switch.sendCommand(OFF)
+// end
+
+rule "Spegnimento Clima OGNI sera 21:00"
+when
+ Time cron "0 0 21 * * ?"
+then
+ Heating_GU120_CL_C1_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C2_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C3_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C4_Switch.sendCommand(OFF)
+ Heating_GU120_CL_C5_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C6_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C7_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C8_Switch.sendCommand(OFF)
+ Heating_GU100_CL_C9_Switch.sendCommand(OFF)
+end
+/**********************************************************************/
+
+
+/**********************************************************************
+ * Rules x automazione CLIMA
+ **********************************************************************/
+
+
+// rule "Accensione Riscaldamento mattino ingresso SAM in inverno"
+// when
+// Item gNet_Mobile_Sam changed to ON
+// //and
+// //Time cron "* * * * JAN,FEB,NOV,DEC ?"
+// then
+// // if (CL_Temp.state < 19)
+// // {
+// Heating_GU120_CL_C1_Switch.sendCommand(ON)
+// Heating_GU120_CL_C2_Switch.sendCommand(ON)
+// Heating_GU120_CL_C3_Switch.sendCommand(ON)
+// Heating_GU120_CL_C4_Switch.sendCommand(ON)
+// Heating_GU120_CL_C5_Switch.sendCommand(ON)
+// // }
+// end
+
+
+/**********************************************************************/
+
+
+/**********************************************************************
+ * Rules x automazione spegnimento aria VMC
+ **********************************************************************/
+// rule "Spegnimento serale VMC"
+// when
+// Time cron "0 30 19 * * ?"
+// then
+// SonoffServizi01_VorticeVCM.sendCommand(OFF)
+// SonoffServizi02_VorticeVCM.sendCommand(OFF)
+// end
+
+// rule "Accensione mattutina VMC"
+// when
+// Time cron "0 30 8 * * ?"
+// then
+// SonoffServizi01_VorticeVCM.sendCommand(ON)
+// SonoffServizi02_VorticeVCM.sendCommand(ON)
+// end
+
+/**********************************************************************/
+
+
+/**********************************************************************
+ * Rules x automazione gestione aria freddo/ventilazione
+ **********************************************************************/
+rule "Fine tuning temperatura Ingresso"
+when
+ Item Heating_GU120_CL_C1_Temp changed or
+ Item Heating_GU120_CL_C1_Set changed
+then
+ val offset = 0.2 //House_HeatingOffset.state as Number
+ val target = Heating_GU120_CL_C1_Set.state as Number
+ val ambient = Heating_GU120_CL_C1_Temp.state as Number
+ val currMode = Heating_GU120_CL_C1_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU120_CL_C1_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU120_CL_C1_Mode.sendCommand(2)
+ }
+ }
+end
+
+rule "Fine tuning temperatura Corridoio"
+when
+ Item Heating_GU120_CL_C2_Temp changed or
+ Item Heating_GU120_CL_C2_Set changed
+then
+ val offset = 0.2 //House_HeatingOffset.state as Number
+ val target = Heating_GU120_CL_C2_Set.state as Number
+ val ambient = Heating_GU120_CL_C2_Temp.state as Number
+ val currMode = Heating_GU120_CL_C2_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU120_CL_C2_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU120_CL_C2_Mode.sendCommand(2)
+ }
+ }
+end
+
+rule "Fine tuning temperatura Finestra"
+when
+ Item Heating_GU120_CL_C3_Temp changed or
+ Item Heating_GU120_CL_C3_Set changed
+then
+ val offset = 0.2 //House_HeatingOffset.state as Number
+ val target = Heating_GU120_CL_C3_Set.state as Number
+ val ambient = Heating_GU120_CL_C3_Temp.state as Number
+ val currMode = Heating_GU120_CL_C3_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU120_CL_C3_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU120_CL_C3_Mode.sendCommand(2)
+ }
+ }
+end
+
+rule "Fine tuning temperatura UFF SAM"
+when
+ Item Heating_GU120_CL_C4_Temp changed or
+ Item Heating_GU120_CL_C4_Set changed
+then
+ val offset = 0.2 //House_HeatingOffset.state as Number
+ val target = Heating_GU120_CL_C4_Set.state as Number
+ val ambient = Heating_GU120_CL_C4_Temp.state as Number
+ val currMode = Heating_GU120_CL_C4_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU120_CL_C4_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU120_CL_C4_Mode.sendCommand(2)
+ }
+ }
+end
+
+rule "Fine tuning temperatura UFF Emmanuele"
+when
+ Item Heating_GU120_CL_C5_Temp changed or
+ Item Heating_GU120_CL_C5_Set changed
+then
+ val offset = 0.2
+ val target = Heating_GU120_CL_C5_Set.state as Number
+ val ambient = Heating_GU120_CL_C5_Temp.state as Number
+ val currMode = Heating_GU120_CL_C5_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU120_CL_C5_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU120_CL_C5_Mode.sendCommand(2)
+ }
+ }
+end
+
+rule "Fine tuning temperatura Desk"
+when
+ Item Heating_GU100_CL_C6_Temp changed or
+ Item Heating_GU100_CL_C6_Set changed
+then
+ val offset = 0.2
+ val target = Heating_GU100_CL_C6_Set.state as Number
+ val ambient = Heating_GU100_CL_C6_Temp.state as Number
+ val currMode = Heating_GU100_CL_C6_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU100_CL_C6_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU100_CL_C6_Mode.sendCommand(2)
+ }
+ }
+end
+
+rule "Fine tuning temperatura OpenSpace"
+when
+ Item Heating_GU100_CL_C7_Temp changed or
+ Item Heating_GU100_CL_C7_Set changed
+then
+ val offset = 0.2
+ val target = Heating_GU100_CL_C7_Set.state as Number
+ val ambient = Heating_GU100_CL_C7_Temp.state as Number
+ val currMode = Heating_GU100_CL_C7_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU100_CL_C7_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU100_CL_C7_Mode.sendCommand(2)
+ }
+ }
+end
+
+
+rule "Fine tuning temperatura Uff Dario"
+when
+ Item Heating_GU100_CL_C8_Temp changed or
+ Item Heating_GU100_CL_C8_Set changed
+then
+ val offset = 0.2
+ val target = Heating_GU100_CL_C8_Set.state as Number
+ val ambient = Heating_GU100_CL_C8_Temp.state as Number
+ val currMode = Heating_GU100_CL_C8_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU100_CL_C8_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU100_CL_C8_Mode.sendCommand(2)
+ }
+ }
+end
+
+
+rule "Fine tuning temperatura Sala Riunioni"
+when
+ Item Heating_GU100_CL_C9_Temp changed or
+ Item Heating_GU100_CL_C9_Set changed
+then
+ val offset = 0.2
+ val target = Heating_GU100_CL_C9_Set.state as Number
+ val ambient = Heating_GU100_CL_C9_Temp.state as Number
+ val currMode = Heating_GU100_CL_C9_Mode.state as Number
+ var turnOnTemp = target + offset
+ var turnOffTemp = target - offset
+ if (ambient >= turnOnTemp) {
+ if(currMode != 3)
+ {
+ Heating_GU100_CL_C9_Mode.sendCommand(3)
+ }
+ } else if (ambient <= turnOffTemp) {
+ if(currMode != 2)
+ {
+ Heating_GU100_CL_C9_Mode.sendCommand(2)
+ }
+ }
+end
+
+// rule "Accensione mattutina VMC"
+// when
+// Time cron "0 30 8 * * ?"
+// then
+// SonoffServizi01_VorticeVCM.sendCommand(ON)
+// SonoffServizi02_VorticeVCM.sendCommand(ON)
+// end
+
+/**********************************************************************/
+
+
+/**********************************************************************
+ * Rules x automazione LUCERNARI
+ **********************************************************************/
+rule "Lucernari switch Momentary x 10 sec"
+when
+ Item SonoffLucernari_Open received command ON
+then
+ SonoffLucernari_Close.sendCommand(OFF)
+ createTimer(now.plusSeconds(12), [|
+ SonoffLucernari_Open.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(13), [|
+ SonoffLucernari_Open.sendCommand(OFF)
+ ])
+end
+
+rule "Lucernari switch Momentary x 10 sec"
+when
+ Item SonoffLucernari_Close received command ON
+then
+ SonoffLucernari_Open.sendCommand(OFF)
+ createTimer(now.plusSeconds(12), [|
+ SonoffLucernari_Close.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(13), [|
+ SonoffLucernari_Close.sendCommand(OFF)
+ ])
+end
+
+/**********************************************************************/
+
+
+
+/**********************************************************************
+ * Rules x automazione LUCI
+ **********************************************************************/
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci01_Switch1 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci01_Switch1.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci01_Switch1.sendCommand(OFF)
+ ])
+end
+
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci01_Switch2 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci01_Switch2.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci01_Switch2.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci01_Switch3 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci01_Switch3.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci01_Switch3.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci02_Switch1 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci02_Switch1.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci02_Switch1.sendCommand(OFF)
+ ])
+end
+
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci02_Switch2 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci02_Switch2.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci02_Switch2.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci02_Switch3 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci02_Switch3.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci02_Switch3.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci02_Switch4 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci02_Switch4.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci02_Switch4.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci03_Switch1 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci03_Switch1.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci03_Switch1.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci03_Switch2 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci03_Switch2.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci03_Switch2.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci03_Switch3 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci03_Switch3.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci03_Switch3.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffLuci03_Switch4 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffLuci03_Switch4.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffLuci03_Switch4.sendCommand(OFF)
+ ])
+end
+
+rule "Luce con switch Momentary"
+when
+ Item SonoffServizi02_Switch5 received command ON
+then
+ createTimer(now.plusSeconds(1), [|
+ SonoffServizi02_Switch5.sendCommand(OFF)
+ ])
+ createTimer(now.plusSeconds(2), [|
+ SonoffServizi02_Switch5.sendCommand(OFF)
+ ])
+end
+
+/**********************************************************************/
+
+// rule "Test cron Riscaldamento ufficio"
+// when
+// Time cron "0 * 15 * JAN,FEB,NOV,DEC THU"
+// then
+// Heating_GU120_CL_C4_Switch.sendCommand(ON)
+// end
+
+
+
+// /**
+// * This is a demo rule which simulates a real dimmer by reacting to increase/decrease commands
+// * and posting an updated state on the bus
+// */
+// rule "Dimmed Light"
+// when
+// Item DimmedLight received command
+// then
+// if ((receivedCommand == INCREASE) || (receivedCommand == DECREASE)) {
+// var Number percent = 0
+// if (DimmedLight.state instanceof DecimalType) percent = DimmedLight.state as DecimalType
+
+// if (receivedCommand == INCREASE) percent = percent + 5
+// if (receivedCommand == DECREASE) percent = percent - 5
+
+// if (percent < 0) percent = 0
+// if (percent > 100) percent = 100
+// postUpdate(DimmedLight, percent);
+// }
+// end
+
+// rule "Timer Demo"
+// when
+// Item Light_GF_Corridor_Ceiling received command
+// then
+// if (receivedCommand == ON) {
+// if (timer === null) {
+// // first ON command, so create a timer to turn the light off again
+// timer = createTimer(now.plusSeconds(10)) [|
+// sendCommand(Light_GF_Corridor_Ceiling, OFF)
+// ]
+// } else {
+// // subsequent ON command, so reschedule the existing timer
+// timer.reschedule(now.plusSeconds(10))
+// }
+// } else if (receivedCommand == OFF) {
+// // remove any previously scheduled timer
+// if (timer !== null) {
+// timer.cancel
+// timer = null
+// }
+// }
+// end
+
+/**
+ * The following rules help initializing the demo items with some helpful states.
+ */
+// rule "Initialize light states"
+// when
+// System started
+// then
+// Lights?.members.forEach(light|
+// postUpdate(light, if (Math::random > 0.7) ON else OFF)
+// )
+// end
+
+// rule "Initialize heating states"
+// when
+// System started
+// then
+// Heating?.members.forEach(heating|
+// postUpdate(heating, if (Math::random > 0.8) ON else OFF)
+// )
+// postUpdate(Temperature_Setpoint, 22)
+// end
+
+// rule "Initialize contact states"
+// when
+// System started
+// then
+// Windows?.members.forEach(window|
+// postUpdate(window, if (Math::random > 0.5) OPEN else CLOSED)
+// )
+// end
+
+// rule "Initialize Location"
+// when
+// System started
+// then
+// DemoLocation.postUpdate(new PointType("52.5200066,13.4049540"))
+// end
+
+// rule "Set random room temperatures"
+// when
+// System started or
+// Time cron "0 0/5 * * * ?"
+// then
+// Temperature?.members.forEach(temperature|
+// postUpdate(temperature, 20.0 + (25.0 - (Math::random * 50.0).intValue) / 10.0)
+// )
+// end
+
+// rule "Set daily max and min temperature"
+// when
+// Item Weather_Temperature changed or
+// Time cron "0 0 0 * * ?" or
+// System started
+// then
+// val max = Weather_Temperature.maximumSince(now.withTimeAtStartOfDay)
+// val min = Weather_Temperature.minimumSince(now.withTimeAtStartOfDay)
+// if (max !== null && min !== null) {
+// postUpdate(Weather_Temp_Max, max.state)
+// postUpdate(Weather_Temp_Min, min.state)
+// }
+// end
+
+// // Creates an item that stores the last update time of this item
+// rule "Records last weather update time"
+// when
+// Item Weather_Temperature received update
+// then
+// postUpdate(Weather_LastUpdate, new DateTimeType())
+// end
+
+// rule "Set random wifi variations"
+// when
+// System started or
+// Time cron "/20 * * * * ?"
+// then
+// postUpdate(Wifi_Level, (Math::random * 4.0).intValue)
+// end
+
+// rule "Set random image URLs"
+// when
+// Time cron "/10 * * * * ?"
+// then
+// val url = urlList.get(random.nextInt(urlList.length))
+// val res = resList.get(random.nextInt(resList.length))
+
+// postUpdate(ImageURL, url + "/" + res)
+// end
+
+// rule "Volume"
+// when
+// Item Volume received command
+// then
+// if (receivedCommand instanceof PercentType) {
+// setMasterVolume(receivedCommand)
+// } else {
+// if (receivedCommand == INCREASE) increaseMasterVolume(20)
+// if (receivedCommand == DECREASE) decreaseMasterVolume(20)
+// }
+// end
+
+// rule "Select Radio Station"
+// when
+// Item Radio_Station received command
+// then
+// switch(receivedCommand) {
+// case 0 : playStream(null)
+// case 1 : playStream("http://metafiles.gl-systemhaus.de/hr/hr3_2.m3u")
+// case 2 : playStream("http://mp3-live.swr3.de/swr3_m.m3u")
+// }
+// end
+
+// vim: syntax=Xtend
diff --git a/Egalware/rules/readme.txt b/Egalware/rules/readme.txt
new file mode 100644
index 0000000..f7952e1
--- /dev/null
+++ b/Egalware/rules/readme.txt
@@ -0,0 +1,5 @@
+Your rules go here.
+All rule files have to have the ".rules" file extension and must follow a special syntax.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/rules-dsl.html
diff --git a/Egalware/scripts/readme.txt b/Egalware/scripts/readme.txt
new file mode 100644
index 0000000..0faff68
--- /dev/null
+++ b/Egalware/scripts/readme.txt
@@ -0,0 +1,5 @@
+Your scripts go here.
+All script files have to have the ".script" file extension and must follow a special syntax.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/rules-dsl.html#scripts
diff --git a/Egalware/scripts/steamware.script b/Egalware/scripts/steamware.script
new file mode 100644
index 0000000..5ec4ed4
--- /dev/null
+++ b/Egalware/scripts/steamware.script
@@ -0,0 +1,3 @@
+say("Demo script has been called!")
+
+// vim: syntax=Xtend
\ No newline at end of file
diff --git a/Egalware/services/addons.cfg b/Egalware/services/addons.cfg
new file mode 100644
index 0000000..cb95e8a
--- /dev/null
+++ b/Egalware/services/addons.cfg
@@ -0,0 +1,38 @@
+# The installation package of this openHAB instance
+# Note: This is only regarded at the VERY FIRST START of openHAB
+# Note: If you want to specify your add-ons yourself through entries below, set the package to "minimal"
+# as otherwise your definition might be in conflict with what the installation package defines.
+#
+# Valid options:
+# - standard : Standard setup for normal use of openHAB
+# - minimal : Installation of core components, but no UIs or other add-ons. Use this for special headless setups.
+#
+# See https://www.openhab.org/docs/configuration/packages.html for a detailed explanation of these packages.
+#
+package = standard
+
+# Access Remote Add-on Repository
+# Defines whether the remote openHAB add-on repository should be used for browsing and installing add-ons. (default is true)
+#
+#remote = true
+
+# A comma-separated list of automation services to install (e.g. "automation = groovyscripting")
+#automation =
+
+# A comma-separated list of bindings to install (e.g. "binding = knx,sonos,zwave")
+#binding =
+
+# A comma-separated list of miscellaneous services to install (e.g. "misc = openhabcloud")
+#misc =
+
+# A comma-separated list of persistence services to install (e.g. "persistence = jpa,rrd4j")
+#persistence =
+
+# A comma-separated list of transformation services to install (e.g. "transformation = jsonpath,map")
+#transformation =
+
+# A comma-separated list of UIs to install (e.g. "ui = basic,habpanel")
+#ui =
+
+# A comma-separated list of voice services to install (e.g. "voice = googletts,marytts")
+#voice =
diff --git a/Egalware/services/readme.txt b/Egalware/services/readme.txt
new file mode 100644
index 0000000..62ba811
--- /dev/null
+++ b/Egalware/services/readme.txt
@@ -0,0 +1,6 @@
+Your service configurations will reside here.
+All configuration files have to have the ".cfg" file extension.
+Service configuration files are automatically created as soon as you install an add-on that can be configured.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/services.html
diff --git a/Egalware/services/rrd4j.cfg b/Egalware/services/rrd4j.cfg
new file mode 100644
index 0000000..cb936ff
--- /dev/null
+++ b/Egalware/services/rrd4j.cfg
@@ -0,0 +1,35 @@
+# configure specific rrd properties for given items in this file.
+# please refer to the documentation available at
+# https://www.openhab.org/addons/persistence/rrd4j/
+#
+# default_numeric and default_other are internally defined defnames and are used as
+# defaults when no other defname applies
+
+#.def=[ABSOLUTE|COUNTER|DERIVE|GAUGE],,[|U],[|U],
+#.archives=[AVERAGE|MIN|MAX|LAST|FIRST|TOTAL],,,
+#.items=
+
+# ctr24h.def=COUNTER,900,0,U,60
+# ctr24h.archives=AVERAGE,0.5,1,480:AVERAGE,0.5,10,144
+# ctr24h.items=*Temperatura,Ufficio*,*Esterno,gEN_RTime
+# ctr7d.def=COUNTER,900,0,U,60
+# ctr7d.archives=AVERAGE,0.5,1,480:AVERAGE,0.5,10,144:AVERAGE,0.5,60,672
+# ctr7d.items=*Temperatura,Ufficio*,*Esterno,gEN_RTime,gEN_Day
+# ctr1m.def=COUNTER,900,0,U,60
+# ctr1m.archives=AVERAGE,0.5,1,480:AVERAGE,0.5,10,144:AVERAGE,0.5,60,672
+# ctr1m.items=*Temperatura,Ufficio*,*Esterno,gEN_RTime,gEN_Day
+# ctr1y.def=COUNTER,900,0,U,60
+# ctr1y.archives=AVERAGE,0.5,1,480:AVERAGE,0.5,10,144:AVERAGE,0.5,60,672
+# ctr1y.items=*Temperatura,Ufficio*,*Esterno,gEN_RTime,gEN_Day
+
+defaultNumeric.def=GAUGE,60,U,U,60
+defaultNumeric.archives=AVERAGE,0.5,1,480:AVERAGE,0.5,4,360:AVERAGE,0.5,14,644:AVERAGE,0.5,60,720:AVERAGE,0.5,720,730:AVERAGE,0.5,10080,520
+defaultNumeric.items=netatmo*,modbus*,fronius*,Heating*,gEN*,GU*,network*,GT*,GN_NET*,Speedtest*,*
+# defaultNumeric.items=*Temperatura,Ufficio*,*Esterno,gEN_RTime
+
+# val24h.def=GAUGE,900,0,U,60
+# val24h.archives=AVERAGE,0.5,1,480:AVERAGE,0.5,10,144
+# val24h.items=*Temperatura,Ufficio*,*Esterno,gEN_RTime
+# val7d.def=GAUGE,900,0,U,60
+# val7d.archives=AVERAGE,0.5,1,480:AVERAGE,0.5,10,144:AVERAGE,0.5,60,672
+# val7d.items=*Temperatura,Ufficio*,*Esterno,gEN_RTime,gEN_Day
diff --git a/Egalware/services/runtime.cfg b/Egalware/services/runtime.cfg
new file mode 100644
index 0000000..37c0382
--- /dev/null
+++ b/Egalware/services/runtime.cfg
@@ -0,0 +1,83 @@
+##################### LOCALE ####################
+
+# The default language that should be used. If not specified, the system default locale is used.
+# The ISO 639 alpha-2 or alpha-3 language code (if there is no alpha-2 one).
+# Example: "en" (English), "de" (German), "ja" (Japanese), "kok" (Konkani)
+#
+#org.openhab.i18n:language=
+
+# The region that should be used.
+# ISO 3166 alpha-2 country code or UN M.49 numeric-3 area code.
+# Example: "US" (United States), "DE" (Germany), "FR" (France), "029" (Caribbean)
+#
+#org.openhab.i18n:region=
+
+################ PERSISTENCE ####################
+
+# The persistence service to use if no other is specified.
+#
+#org.openhab.persistence:default=
+
+################### AUDIO #######################
+
+# This parameter defines the default audio source to use (if not set, the first available one will be used.
+#
+#org.openhab.audio:defaultSource=
+
+# This parameter defines the default audio sink to use (if not set, the first available one will be used.
+#
+#org.openhab.audio:defaultSink=
+
+##################### VOICE #####################
+
+# This parameter defines the default text-to-speech service to use (if not set, the first available one will be used.
+#
+#org.openhab.voice:defaultTTS=
+
+# This parameter defines the default speech-to-text service to use (if not set, the first available one will be used.
+#
+#org.openhab.voice:defaultSTT=
+
+# The default voice to use if no specific TTS service or voice is specified.
+#
+#org.openhab.voice:defaultVoice=
+
+# The default human language interpreter to use if no other is specified.
+#
+#org.openhab.voice:defaultHLI=
+
+################### EPHEMERIS ###################
+
+# This parameter defines the default list of usual non workable days for the Ephemeris service.
+# The value has to be surrounded by square brackets ('[' and ']') and optionally contain value delimiters - a comma ',' to be interpreted as a list of values.
+# Example: [SATURDAY,SUNDAY]
+#
+org.openhab.ephemeris:dayset-weekend=[SATURDAY,SUNDAY]
+
+# This parameter defines the default list of usual workable days for the Ephemeris service.
+# The value has to be surrounded by square brackets ('[' and ']') and optionally contain value delimiters - a comma ',' to be interpreted as a list of values.
+#
+org.openhab.ephemeris:dayset-school=[MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY]
+
+################ MISCELLANOUS ###################
+
+# The karaf sshHost parameter configures the bind address for the ssh login to karaf.
+# Default is 127.0.0.1 (localhost), so it is only possible to login from the local machine.
+#
+# Setting this to the address of another network interfaces will allow login from this network.
+# Setting this to 0.0.0.0 will allow login from all network interfaces.
+#
+# !!! Security warning !!!
+# Remember to change default login/password, if you allow external login.
+# See https://www.openhab.org/docs/administration/console.html for details.
+#
+#org.apache.karaf.shell:sshHost = 0.0.0.0
+
+# Setting this to true will automatically approve all inbox entries and create Things for them,
+# so that they are immediately available in the system (default is false)
+#
+#org.openhab.inbox:autoApprove=true
+
+org.openhab.core.ui.tiles:openhabiandocs-link-name=openHABian Help
+org.openhab.core.ui.tiles:openhabiandocs-link-url=https://www.openhab.org/docs/installation/openhabian.html
+org.openhab.core.ui.tiles:openhabiandocs-link-imageurl=data:image/png;base64,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
diff --git a/Egalware/services/voicerss.cfg b/Egalware/services/voicerss.cfg
new file mode 100644
index 0000000..3c43f5a
--- /dev/null
+++ b/Egalware/services/voicerss.cfg
@@ -0,0 +1,5 @@
+######################## VoiceRSS Text-to-Speech Engine ########################
+
+# API key you got when you subscribed to the Voice RSS service
+# Open your profile to get the value: http://www.voicerss.org/personel/
+#apiKey=1234567890
diff --git a/Egalware/sitemaps/egalware.sitemap b/Egalware/sitemaps/egalware.sitemap
new file mode 100644
index 0000000..9922822
--- /dev/null
+++ b/Egalware/sitemaps/egalware.sitemap
@@ -0,0 +1,630 @@
+sitemap egalware label="EgalWare"
+{
+
+ Frame label="Energia"
+ {
+ Text item=Fn_FullLoadPos label="Energia [%.0f W]" icon="poweroutlet_eu"
+ {
+ Frame label="Potenza Istantanea"
+ {
+ Text item=Fn_FullLoadPos icon="poweroutlet_eu"
+ {
+ Frame label="(A) ↓ Impiego (B+C = Full Load) [%.0f W]"
+ {
+ Switch item=FronLP label="Periodo" icon="line" mappings=[0="1h", 1="12h", 2="24h", 3="2g", 4="3g", 5="7g"]
+ Chart item=Fn_FullLoadPos visibility=[FronLP==0,FronLP=="Uninitialized"] legend=true period=h refresh=500
+ Chart item=Fn_FullLoadPos visibility=[FronLP==1] legend=true period=12h refresh=1000
+ Chart item=Fn_FullLoadPos visibility=[FronLP==2] legend=true period=24h refresh=5000
+ Chart item=Fn_FullLoadPos visibility=[FronLP==3] legend=true period=2D refresh=10000
+ Chart item=Fn_FullLoadPos visibility=[FronLP==4] legend=true period=3D refresh=60000
+ Chart item=Fn_FullLoadPos visibility=[FronLP==5] legend=true period=W refresh=60000
+ }
+ }
+ Text item=Fn_PrelRete icon="energy"
+ {
+ Frame label="(B) ↓ Da Rete [%.0f W]"
+ {
+ Switch item=FronGP label="Periodo" icon="line" mappings=[0="1h", 1="12h", 2="24h", 3="2g", 4="3g", 5="7g"]
+ Chart item=Fn_PrelRete visibility=[FronGP==0,FronGP=="Uninitialized"] legend=true period=h refresh=500
+ Chart item=Fn_PrelRete visibility=[FronGP==1] legend=true period=12h refresh=1000
+ Chart item=Fn_PrelRete visibility=[FronGP==2] legend=true period=24h refresh=5000
+ Chart item=Fn_PrelRete visibility=[FronGP==3] legend=true period=2D refresh=10000
+ Chart item=Fn_PrelRete visibility=[FronGP==4] legend=true period=3D refresh=60000
+ Chart item=Fn_PrelRete visibility=[FronGP==5] legend=true period=W refresh=60000
+ }
+ }
+ Text item=Fn_FromFV icon="solarplant"
+ {
+ Frame label="(C) ↑ Da Fotovoltaico"
+ {
+ Switch item=FronPacInt label="Periodo" icon="line" mappings=[0="1h", 1="12h", 2="24h", 3="2g", 4="3g", 5="7g"]
+ Chart item=Fn_FromFV visibility=[FronPacInt==0,FronPacInt=="Uninitialized"] legend=true period=h refresh=500
+ Chart item=Fn_FromFV visibility=[FronPacInt==1] legend=true period=12h refresh=1000
+ Chart item=Fn_FromFV visibility=[FronPacInt==2] legend=true period=24h refresh=5000
+ Chart item=Fn_FromFV visibility=[FronPacInt==3] legend=true period=2D refresh=10000
+ Chart item=Fn_FromFV visibility=[FronPacInt==4] legend=true period=3D refresh=60000
+ Chart item=Fn_FromFV visibility=[FronPacInt==5] legend=true period=W refresh=60000
+ }
+ }
+ }
+ Frame label="Valori Giornalieri"
+ {
+ Text item=Fn_PrelReteDay icon="energy"
+ {
+ Frame label="↓ Consumo gg [%.2f kWh]"
+ {
+ Switch item=FronDayEnInt label="Periodo" icon="line" mappings=[0="12h", 1="3g", 2="7g", 3="1M", 4="2M", 5="1Y"]
+ Chart item=Fn_PrelReteDay visibility=[FronDayEnInt==0,FronDayEnInt=="Uninitialized"] legend=true period=12h refresh=100
+ Chart item=Fn_PrelReteDay visibility=[FronDayEnInt==1] legend=true period=3D refresh=1000
+ Chart item=Fn_PrelReteDay visibility=[FronDayEnInt==2] legend=true period=W refresh=1000
+ Chart item=Fn_PrelReteDay visibility=[FronDayEnInt==3] legend=true period=M refresh=5000
+ Chart item=Fn_PrelReteDay visibility=[FronDayEnInt==4] legend=true period=2M refresh=10000
+ Chart item=Fn_PrelReteDay visibility=[FronDayEnInt==5] legend=true period=Y refresh=60000
+ }
+ }
+ Text item=Fn_ProdFVDay icon="solarplant"
+ {
+ Frame label="↑ Produzione gg [%.2f kWh]"
+ {
+ Switch item=FronDayEnInt label="Periodo" icon="line" mappings=[0="12h", 1="3g", 2="7g", 3="1M", 4="2M", 5="1Y"]
+ Chart item=Fn_ProdFVDay visibility=[FronDayEnInt==0,FronDayEnInt=="Uninitialized"] legend=true period=12h refresh=1000
+ Chart item=Fn_ProdFVDay visibility=[FronDayEnInt==1] legend=true period=3D refresh=1000
+ Chart item=Fn_ProdFVDay visibility=[FronDayEnInt==2] legend=true period=W refresh=1000
+ Chart item=Fn_ProdFVDay visibility=[FronDayEnInt==3] legend=true period=M refresh=5000
+ Chart item=Fn_ProdFVDay visibility=[FronDayEnInt==4] legend=true period=2M refresh=10000
+ Chart item=Fn_ProdFVDay visibility=[FronDayEnInt==5] legend=true period=Y refresh=60000
+ }
+ }
+ }
+ Frame label="Grafici"
+ {
+ Text item=Fn_ProdFVYearProd label="Produzione Annuale" icon="line"
+ {
+ Frame label="Produzione Annuale"
+ {
+ Switch item=FronYearEnInt label="Periodo" icon="line" mappings=[0="7g", 1="1M", 2="2M", 3="1Y"]
+ Chart item=Fn_ProdFVYearProd visibility=[FronYearEnInt==0,FronYearEnInt=="Uninitialized"] legend=true period=W refresh=1000
+ Chart item=Fn_ProdFVYearProd visibility=[FronYearEnInt==1] legend=true period=M refresh=5000
+ Chart item=Fn_ProdFVYearProd visibility=[FronYearEnInt==2] legend=true period=2M refresh=10000
+ Chart item=Fn_ProdFVYearProd visibility=[FronYearEnInt==3] legend=true period=Y refresh=60000
+ }
+ }
+ Text item=Fn_ProdFVTotProd label="Produzione Totale" icon="line"
+ {
+ Frame label="Produzione Annuale"
+ {
+ Switch item=FronTotEnInt label="Periodo" icon="line" mappings=[0="7g", 1="1M", 2="2M", 3="1Y"]
+ Chart item=Fn_ProdFVTotProd visibility=[FronTotEnInt==0, FronTotEnInt=="Uninitialized"] legend=true period=W refresh=1000
+ Chart item=Fn_ProdFVTotProd visibility=[FronTotEnInt==1] legend=true period=M refresh=5000
+ Chart item=Fn_ProdFVTotProd visibility=[FronTotEnInt==2] legend=true period=2M refresh=10000
+ Chart item=Fn_ProdFVTotProd visibility=[FronTotEnInt==3] legend=true period=Y refresh=60000
+ }
+ }
+ }
+ // Group item=gEN label="Fronius 6KW" icon="solarplant"
+ }
+ }
+ Frame label="Ufficio"
+ {
+ Group item=CL_Switch label="Climatizzazione" icon="heating"
+ {
+ Group item=CL_Switch label="Unità Attive"
+ {
+ Switch item=CL_Switch label="Generale"
+ Switch item=Heating_GU120_CL_C1_Switch
+ Switch item=Heating_GU120_CL_C2_Switch
+ Switch item=Heating_GU120_CL_C3_Switch
+ Switch item=Heating_GU120_CL_C4_Switch
+ Switch item=Heating_GU120_CL_C5_Switch
+ Switch item=Heating_GU100_CL_C6_Switch
+ Switch item=Heating_GU100_CL_C7_Switch
+ Switch item=Heating_GU100_CL_C8_Switch
+ Switch item=Heating_GU100_CL_C9_Switch
+ }
+ Text label="Andamento Grafico" icon="line"
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="time" mappings=[0="h",1="4h",2="12h",3="24h",4="7g",5="1M",6="1Y"]
+ Frame label="Temperature Rilevate"
+ {
+ Chart item=CL_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=CL_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=4000
+ Chart item=CL_Temp legend=true visibility=[CL_GrpScale==2] period=12h refresh=6000
+ Chart item=CL_Temp legend=true visibility=[CL_GrpScale==3,CL_GrpScale=="Uninitialized"] period=D refresh=10000
+ Chart item=CL_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=CL_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=CL_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Frame label="Unità Attive" icon="switch"
+ {
+ Chart item=CL_Switch legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=CL_Switch legend=true visibility=[CL_GrpScale==1] period=4h refresh=4000
+ Chart item=CL_Switch legend=true visibility=[CL_GrpScale==2] period=12h refresh=6000
+ Chart item=CL_Switch legend=true visibility=[CL_GrpScale==3,CL_GrpScale=="Uninitialized"] period=D refresh=10000
+ Chart item=CL_Switch legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=CL_Switch legend=true visibility=[CL_GrpScale==5] period=Y refresh=60000
+ Chart item=CL_Switch legend=true visibility=[CL_GrpScale==6] period=M refresh=60000
+ }
+ Frame label="Modo Clima" icon="switch"
+ {
+ Chart item=CL_Mode legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=CL_Mode legend=true visibility=[CL_GrpScale==1] period=4h refresh=4000
+ Chart item=CL_Mode legend=true visibility=[CL_GrpScale==2] period=12h refresh=6000
+ Chart item=CL_Mode legend=true visibility=[CL_GrpScale==3,CL_GrpScale=="Uninitialized"] period=D refresh=10000
+ Chart item=CL_Mode legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=CL_Mode legend=true visibility=[CL_GrpScale==5] period=Y refresh=60000
+ Chart item=CL_Mode legend=true visibility=[CL_GrpScale==6] period=M refresh=60000
+ }
+ // Frame label="Temp Impostata" icon="switch"
+ // {
+ // Chart item=CL_Set legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ // Chart item=CL_Set legend=true visibility=[CL_GrpScale==1] period=4h refresh=4000
+ // Chart item=CL_Set legend=true visibility=[CL_GrpScale==2] period=12h refresh=6000
+ // Chart item=CL_Set legend=true visibility=[CL_GrpScale==3,CL_GrpScale=="Uninitialized"] period=D refresh=10000
+ // Chart item=CL_Set legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ // Chart item=CL_Set legend=true visibility=[CL_GrpScale==5] period=Y refresh=60000
+ // Chart item=CL_Set legend=true visibility=[CL_GrpScale==6] period=M refresh=60000
+ // }
+ Frame label="Velocita" icon="switch"
+ {
+ Chart item=CL_Fan legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=CL_Fan legend=true visibility=[CL_GrpScale==1] period=4h refresh=4000
+ Chart item=CL_Fan legend=true visibility=[CL_GrpScale==2] period=12h refresh=6000
+ Chart item=CL_Fan legend=true visibility=[CL_GrpScale==3,CL_GrpScale=="Uninitialized"] period=D refresh=10000
+ Chart item=CL_Fan legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=CL_Fan legend=true visibility=[CL_GrpScale==5] period=Y refresh=60000
+ Chart item=CL_Fan legend=true visibility=[CL_GrpScale==6] period=M refresh=60000
+ }
+ }
+ Group item=CL_Temp label="Temperatura (Media)"
+ Group item=CL_Set label="Set Temperature"
+ {
+ Setpoint item=Heating_GU120_CL_C1_Set minValue=18 maxValue=28 step=1 label="Set Ingresso"
+ Setpoint item=Heating_GU120_CL_C2_Set minValue=18 maxValue=28 step=1 label="Set Corridoio"
+ Setpoint item=Heating_GU120_CL_C3_Set minValue=18 maxValue=28 step=1 label="Set Finestra"
+ Setpoint item=Heating_GU120_CL_C4_Set minValue=18 maxValue=28 step=1 label="Set Uff Samuele"
+ Setpoint item=Heating_GU120_CL_C5_Set minValue=18 maxValue=28 step=1 label="Set Uff EmmanueleUff"
+ Setpoint item=Heating_GU100_CL_C6_Set minValue=18 maxValue=28 step=1 label="Set Desk"
+ Setpoint item=Heating_GU100_CL_C7_Set minValue=18 maxValue=28 step=1 label="Set OpenSpace"
+ Setpoint item=Heating_GU100_CL_C8_Set minValue=18 maxValue=28 step=1 label="Set Uff Dario"
+ Setpoint item=Heating_GU100_CL_C9_Set minValue=18 maxValue=28 step=1 label="Set Sala Riunioni"
+ }
+ Group item=CL_Mode
+ {
+ Setpoint item=Heating_GU120_CL_C1_Mode minValue=2 maxValue=4 step=1 label="Modo Ingresso"
+ Setpoint item=Heating_GU120_CL_C2_Mode minValue=2 maxValue=4 step=1 label="Modo Corridoio"
+ Setpoint item=Heating_GU120_CL_C3_Mode minValue=2 maxValue=4 step=1 label="Modo Finestra"
+ Setpoint item=Heating_GU120_CL_C4_Mode minValue=2 maxValue=4 step=1 label="Modo Uff Sam"
+ Setpoint item=Heating_GU120_CL_C5_Mode minValue=2 maxValue=4 step=1 label="Modo Uff Emm"
+ Setpoint item=Heating_GU100_CL_C6_Mode minValue=2 maxValue=4 step=1 label="Modo Desk"
+ Setpoint item=Heating_GU100_CL_C7_Mode minValue=2 maxValue=4 step=1 label="Modo OpenSpace"
+ Setpoint item=Heating_GU100_CL_C8_Mode minValue=2 maxValue=4 step=1 label="Modo Uff Dario"
+ Setpoint item=Heating_GU100_CL_C9_Mode minValue=2 maxValue=4 step=1 label="Modo Sala Riunioni"
+ }
+ Group item=CL_Fan label="Set Velocità"
+ {
+ Setpoint item=Heating_GU120_CL_C1_Fan minValue=1 maxValue=3 step=1 label="Fan Ingresso"
+ Setpoint item=Heating_GU120_CL_C2_Fan minValue=1 maxValue=3 step=1 label="Fan Corridoio"
+ Setpoint item=Heating_GU120_CL_C3_Fan minValue=1 maxValue=3 step=1 label="Fan Finestra"
+ Setpoint item=Heating_GU120_CL_C4_Fan minValue=1 maxValue=3 step=1 label="Fan Uff Samuele"
+ Setpoint item=Heating_GU120_CL_C5_Fan minValue=1 maxValue=3 step=1 label="Fan Uff Emmanuele"
+ Setpoint item=Heating_GU100_CL_C6_Fan minValue=1 maxValue=3 step=1 label="Fan Desk"
+ Setpoint item=Heating_GU100_CL_C7_Fan minValue=1 maxValue=3 step=1 label="Fan OpenSpace"
+ Setpoint item=Heating_GU100_CL_C8_Fan minValue=1 maxValue=3 step=1 label="Fan Uff Dario"
+ Setpoint item=Heating_GU100_CL_C9_Fan minValue=1 maxValue=3 step=1 label="Fan Sala Riunioni"
+ }
+ Text label="Set Unità" icon="settings"
+ {
+ // Text label="Controllo Singolo" icon="heating"
+ // {
+ Text item=Heating_GU120_CL_C1_Switch label="U120 Clima Ingresso"
+ {
+ Switch item=Heating_GU120_CL_C1_Switch
+ Text item=Heating_GU120_CL_C1_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU120_CL_C1_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU120_CL_C1_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU120_CL_C1_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU120_CL_C1_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU120_CL_C1_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU120_CL_C1_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU120_CL_C1_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU120_CL_C1_Set minValue=18 maxValue=26 step=1 label="Imp. Ingresso"
+ Setpoint item=Heating_GU120_CL_C1_Mode minValue=2 maxValue=4 step=1 label="Modo [%s]"
+ }
+ Text item=Heating_GU120_CL_C2_Switch label="U120 Clima Corridoio"
+ {
+ Switch item=Heating_GU120_CL_C2_Switch
+ Text item=Heating_GU120_CL_C2_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU120_CL_C2_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU120_CL_C2_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU120_CL_C2_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU120_CL_C2_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU120_CL_C2_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU120_CL_C2_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU120_CL_C2_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU120_CL_C2_Set minValue=18 maxValue=26 step=1 label="Imp. Corridoio"
+ Setpoint item=Heating_GU120_CL_C2_Mode minValue=2 maxValue=4 step=1 label="Modo [%s]"
+ }
+ Text item=Heating_GU120_CL_C3_Switch label="U120 Clima Finestra"
+ {
+ Switch item=Heating_GU120_CL_C3_Switch
+ Text item=Heating_GU120_CL_C3_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU120_CL_C3_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU120_CL_C3_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU120_CL_C3_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU120_CL_C3_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU120_CL_C3_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU120_CL_C3_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU120_CL_C3_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU120_CL_C3_Set minValue=18 maxValue=26 step=1 label="Imp. Finestra"
+ Setpoint item=Heating_GU120_CL_C3_Mode minValue=2 maxValue=4 step=1 label="Modo [%s]"
+ }
+ Text item=Heating_GU120_CL_C4_Switch label="U120 Clima Uff Samuele"
+ {
+ Switch item=Heating_GU120_CL_C4_Switch
+ Text item=Heating_GU120_CL_C4_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU120_CL_C4_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU120_CL_C4_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU120_CL_C4_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU120_CL_C4_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU120_CL_C4_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU120_CL_C4_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU120_CL_C4_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU120_CL_C4_Set minValue=18 maxValue=26 step=1 label="Imp. Ufficio Samuele"
+ Setpoint item=Heating_GU120_CL_C4_Mode minValue=2 maxValue=4 step=1 label="Modo [%s]"
+ }
+ Text item=Heating_GU120_CL_C5_Switch label="U120 Clima Uff Emmanuele"
+ {
+ Switch item=Heating_GU120_CL_C5_Switch
+ Text item=Heating_GU120_CL_C5_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU120_CL_C5_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU120_CL_C5_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU120_CL_C5_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU120_CL_C5_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU120_CL_C5_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU120_CL_C5_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU120_CL_C5_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU120_CL_C5_Set minValue=18 maxValue=26 step=1 label="Imp. Uff Emmanuele"
+ Setpoint item=Heating_GU120_CL_C5_Mode minValue=2 maxValue=4 step=1 label="Modo [%s]"
+ }
+ Text item=Heating_GU100_CL_C6_Switch label="U100 Desk Ingresso"
+ {
+ Switch item=Heating_GU100_CL_C6_Switch
+ Text item=Heating_GU100_CL_C6_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU100_CL_C6_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU100_CL_C6_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU100_CL_C6_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU100_CL_C6_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU100_CL_C6_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU100_CL_C6_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU100_CL_C6_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU100_CL_C6_Set minValue=18 maxValue=26 step=1 label="Impostazione CL6"
+ }
+ Text item=Heating_GU100_CL_C7_Switch label="U100 OpenSpace"
+ {
+ Switch item=Heating_GU100_CL_C7_Switch
+ Text item=Heating_GU100_CL_C7_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU100_CL_C7_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU100_CL_C7_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU100_CL_C7_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU100_CL_C7_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU100_CL_C7_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU100_CL_C7_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU100_CL_C7_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU100_CL_C7_Set minValue=18 maxValue=26 step=1 label="Impostazione CL6"
+ }
+ Text item=Heating_GU100_CL_C8_Switch label="U100 Uff Dario"
+ {
+ Switch item=Heating_GU100_CL_C8_Switch
+ Text item=Heating_GU100_CL_C8_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU100_CL_C8_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU100_CL_C8_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU100_CL_C8_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU100_CL_C8_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU100_CL_C8_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU100_CL_C8_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU100_CL_C8_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU100_CL_C8_Set minValue=18 maxValue=26 step=1 label="Impostazione CL6"
+ }
+ Text item=Heating_GU100_CL_C9_Switch label="U100 Sala Riunioni"
+ {
+ Switch item=Heating_GU100_CL_C9_Switch
+ Text item=Heating_GU100_CL_C9_Temp
+ {
+ Switch item=CL_GrpScale label="Periodo" icon="line" mappings=[0="1h",1="4h",2="12h", 3="24h", 4="7g", 5="1M", 6="1Y"]
+ Chart item=Heating_GU100_CL_C9_Temp legend=true visibility=[CL_GrpScale==0] period=h refresh=2000
+ Chart item=Heating_GU100_CL_C9_Temp legend=true visibility=[CL_GrpScale==1] period=4h refresh=5000
+ Chart item=Heating_GU100_CL_C9_Temp legend=true visibility=[CL_GrpScale==2,CL_GrpScale=="Uninitialized"] period=12h refresh=10000
+ Chart item=Heating_GU100_CL_C9_Temp legend=true visibility=[CL_GrpScale==3] period=D refresh=60000
+ Chart item=Heating_GU100_CL_C9_Temp legend=true visibility=[CL_GrpScale==4] period=W refresh=60000
+ Chart item=Heating_GU100_CL_C9_Temp legend=true visibility=[CL_GrpScale==5] period=M refresh=60000
+ Chart item=Heating_GU100_CL_C9_Temp legend=true visibility=[CL_GrpScale==6] period=Y refresh=60000
+ }
+ Setpoint item=Heating_GU100_CL_C9_Set minValue=18 maxValue=26 step=1 label="Impostazione CL6"
+ }
+ }
+ }
+ Text label="Luci Openspace" icon="wallswitch"
+ // Group item=Luci label="Luci Openspace" icon="wallswitch"
+ {
+ Frame label="U120" icon="wallswitch"
+ {
+ Switch item=SonoffLuci01_Switch1 label="Ingresso" icon="wallswitch"
+ Switch item=SonoffLuci01_Switch2 label="Muro" icon="wallswitch"
+ Switch item=SonoffLuci01_Switch3 label="Corridoio" icon="wallswitch"
+ }
+ Frame label="U100" icon="wallswitch"
+ {
+ Switch item=SonoffLuci03_Switch1 label="Ingresso" icon="wallswitch"
+ Switch item=SonoffLuci03_Switch2 label="Fila A" icon="wallswitch"
+ Switch item=SonoffLuci03_Switch3 label="Fila B" icon="wallswitch"
+ }
+ }
+ Text label="Luci Uffici" icon="wallswitch"
+ // Group item=Luci label="Luci Uffici" icon="wallswitch"
+ {
+ Frame label="U100" icon="wallswitch"
+ {
+ Switch item=SonoffServizi02_Switch5 label="Uff Dario" icon="wallswitch"
+ Switch item=SonoffLuci03_Switch4 label="Sala Riunioni" icon="wallswitch"
+ }
+ Frame label="U120" icon="wallswitch"
+ {
+ Switch item=SonoffLuci02_Switch1 label="Uff Emmanuele Muro" icon="wallswitch"
+ Switch item=SonoffLuci02_Switch2 label="Uff Emmanuele Porta" icon="wallswitch"
+ Switch item=SonoffLuci02_Switch3 label="Uff Samuele Porta" icon="wallswitch"
+ Switch item=SonoffLuci02_Switch4 label="Uff Samuele Finestra" icon="wallswitch"
+ }
+ }
+ Text label="Servizi" icon="group"
+ // Group item=Servizi label="Servizi" icon="group"
+ {
+ Frame label="Ventilazione" icon="group"
+ {
+ Switch item=SonoffServizi01_VorticeVCM label="VMC 120"
+ Switch item=SonoffServizi02_VorticeVCM label="VMC 100"
+ Switch item=SonoffServizi01_VentilatoreSR label="Ventilatore server --> Ufficio"
+ }
+ // Frame label="Lucernari" icon="rollershutter"
+ // {
+ // Switch item=SonoffLucernari_Open label="Apertura Lucernari" icon="rollershutter"
+ // Switch item=SonoffLucernari_Close label="Chiusura Lucernari" icon="rollershutter"
+ // }
+ Frame label="Sala Server" icon="wallswitch"
+ {
+ Switch item=SonoffServizi01_SwichLuceServer label="Luce Sala Server"
+ }
+ }
+ }
+ Frame label="Meteo"
+ {
+ Text label="Andamento Netatmo" icon="line"
+ {
+ Frame label="Temperature Rilevate"
+ {
+ Switch item=GT_NetatmoInt label="Periodo" icon="line" mappings=[0="12h", 1="24h", 2="2g", 3="7g", 4="1M"]
+ Chart item=GT_Netatmo_temp legend=true visibility=[GT_NetatmoInt==0,GT_NetatmoInt=="Uninitialized"] period=12h refresh=30000
+ Chart item=GT_Netatmo_temp legend=true visibility=[GT_NetatmoInt==1] period=D refresh=30000
+ Chart item=GT_Netatmo_temp legend=true visibility=[GT_NetatmoInt==2] period=2D refresh=30000
+ Chart item=GT_Netatmo_temp legend=true visibility=[GT_NetatmoInt==3] period=W refresh=600000
+ Chart item=GT_Netatmo_temp legend=true visibility=[GT_NetatmoInt==4] period=M refresh=6000000
+ }
+ Frame label="CO2 Rilevata"
+ {
+ // Switch item=GT_NetatmoInt label="Periodo" icon="line" mappings=[0="12h", 1="24h", 2="2g", 3="7g", 4="1M"]
+ Chart item=GT_Netatmo_Co2 legend=true visibility=[GT_NetatmoInt==0,GT_NetatmoInt=="Uninitialized"] period=12h refresh=30000
+ Chart item=GT_Netatmo_Co2 legend=true visibility=[GT_NetatmoInt==1] period=D refresh=30000
+ Chart item=GT_Netatmo_Co2 legend=true visibility=[GT_NetatmoInt==2] period=2D refresh=30000
+ Chart item=GT_Netatmo_Co2 legend=true visibility=[GT_NetatmoInt==3] period=W refresh=600000
+ Chart item=GT_Netatmo_Co2 legend=true visibility=[GT_NetatmoInt==4] period=M refresh=6000000
+ }
+ Frame label="Umidità Rilevata"
+ {
+ // Switch item=GT_NetatmoInt label="Periodo" icon="line" mappings=[0="12h", 1="24h", 2="2g", 3="7g", 4="1M"]
+ Chart item=GT_Netatmo_Hum legend=true visibility=[GT_NetatmoInt==0,GT_NetatmoInt=="Uninitialized"] period=12h refresh=30000
+ Chart item=GT_Netatmo_Hum legend=true visibility=[GT_NetatmoInt==1] period=D refresh=30000
+ Chart item=GT_Netatmo_Hum legend=true visibility=[GT_NetatmoInt==2] period=2D refresh=30000
+ Chart item=GT_Netatmo_Hum legend=true visibility=[GT_NetatmoInt==3] period=W refresh=600000
+ Chart item=GT_Netatmo_Hum legend=true visibility=[GT_NetatmoInt==4] period=M refresh=6000000
+ }
+ Frame label="Rumore Rilevato"
+ {
+ // Switch item=GT_NetatmoInt label="Periodo" icon="line" mappings=[0="12h", 1="24h", 2="2g", 3="7g", 4="1M"]
+ Chart item=GT_Netatmo_Noise legend=true visibility=[GT_NetatmoInt==0,GT_NetatmoInt=="Uninitialized"] period=12h refresh=30000
+ Chart item=GT_Netatmo_Noise legend=true visibility=[GT_NetatmoInt==1] period=D refresh=30000
+ Chart item=GT_Netatmo_Noise legend=true visibility=[GT_NetatmoInt==2] period=2D refresh=30000
+ Chart item=GT_Netatmo_Noise legend=true visibility=[GT_NetatmoInt==3] period=W refresh=600000
+ Chart item=GT_Netatmo_Noise legend=true visibility=[GT_NetatmoInt==4] period=M refresh=6000000
+ }
+ Frame label="Pressione Rilevata"
+ {
+ // Switch item=GT_NetatmoInt label="Periodo" icon="line" mappings=[0="12h", 1="24h", 2="2g", 3="7g", 4="1M"]
+ Chart item=GT_Netatmo_Press legend=true visibility=[GT_NetatmoInt==0,GT_NetatmoInt=="Uninitialized"] period=12h refresh=30000
+ Chart item=GT_Netatmo_Press legend=true visibility=[GT_NetatmoInt==1] period=D refresh=30000
+ Chart item=GT_Netatmo_Press legend=true visibility=[GT_NetatmoInt==2] period=2D refresh=30000
+ Chart item=GT_Netatmo_Press legend=true visibility=[GT_NetatmoInt==3] period=W refresh=600000
+ Chart item=GT_Netatmo_Press legend=true visibility=[GT_NetatmoInt==4] period=M refresh=6000000
+ }
+ }
+ Group item=GT_Netatmo label="Rilievi Netatmo"
+ Text item=Stagione icon="time"
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_condition label="Meteo"
+ // {
+ // Frame label="Situazione Attuale"
+ // {
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_condition
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_temperature
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_humidity
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_pressure
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_wind_direction
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_wind_speed
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_rain
+ // Text item=openweathermap_weather_and_forecast_5af87f095d_local_current_snow
+ // }
+ // Frame label="Previsioni 3h"
+ // {
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_condition
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_temperature
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_humidity
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_pressure
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_wind_direction
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_wind_speed
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_rain
+ // Text item=openweathermap_weather_and_forecast_48a7dcf6_local_forecastHours03_snow
+ // }
+ // }
+ }
+ Frame label="Network"
+ {
+ // Group item=gNet_Mobile label="Presenze [(%d)]" icon="network"
+ // {
+ // Switch item=gNet_Mobile_Sam
+ // }
+ // Text item=gNet_Mobile label="Presenze" icon="door"
+ // {
+ // Frame label="Presenze Ufficio"
+ // {
+ // Switch item=gNet_mobileChartSel label="Periodo" icon="door" mappings=[0="24h", 1="7g", 2="1M", 3="2M"]
+ // Chart item=gNet_Mobile_Sam visibility=[gNet_mobileChartSel==0, gNet_mobileChartSel=="Uninitialized"] legend=true period=D refresh=1000
+ // Chart item=gNet_Mobile_Sam visibility=[gNet_mobileChartSel==1] legend=true period=W refresh=10000
+ // Chart item=gNet_Mobile_Sam visibility=[gNet_mobileChartSel==2] legend=true period=M refresh=10000
+ // Chart item=gNet_Mobile_Sam visibility=[gNet_mobileChartSel==3] legend=true period=2M refresh=600000
+ // }
+ // }
+ Text label="Rete e Servers"
+ {
+ Frame label="Apparati"
+ {
+ Text item=SW10G label="SW10G [%s]"
+ Text item=SW10GResponseTime label="SW10G ping Response Time [%s]"
+ Text item=GW label="GW [%s]"
+ Text item=GWResponseTime label="GW ping Response Time [%s]"
+ Text item=Modem label="Modem [%s]"
+ Text item=ModemResponseTime label="Modem ping Response Time [%s]"
+ Text item=GDns label="GDns [%s]"
+ Text item=GDnsResponseTime label="GDns ping Response Time [%s]"
+ }
+ Frame label="Servers"
+ {
+ Text item=HV03 label="HV03 [%s]"
+ Text item=HV03ResponseTime label="HV03 ping Response Time [%s]"
+ Text item=HV04 label="HV04 [%s]"
+ Text item=HV04ResponseTime label="HV04 ping Response Time [%s]"
+ }
+ }
+ // Frame label="SpeedTest" {
+ // Text item=Speedtest_Start
+ // Switch item=Speedtest_Running
+ // Default item=Speedtest_Progress
+ // Text item=Speedtest_Running label="Speedtest [%s]" visibility=[Speedtest_Running != "-"]
+ // }
+
+ // Frame label="Down" {
+ // Text item=Speedtest_ResultDown
+ // Chart item=Speedtest_ResultDown period=D refresh=30000 service="influxdb" visibility=[sys_chart_period==0, sys_chart_period=="Non initialisé"]
+ // Chart item=Speedtest_ResultDown period=W refresh=30000 service="influxdb" visibility=[sys_chart_period==1]
+ // Chart item=Speedtest_ResultDown period=M refresh=30000 service="influxdb" visibility=[sys_chart_period==2]
+ // Chart item=Speedtest_ResultDown period=Y refresh=30000 service="influxdb" visibility=[sys_chart_period==3]
+ // }
+
+ // Frame label="Up" {
+ // Text item=Speedtest_ResultUp
+ // Chart item=Speedtest_ResultUp period=D refresh=30000 service="influxdb" visibility=[sys_chart_period==0, sys_chart_period=="Non initialisé"]
+ // Chart item=Speedtest_ResultUp period=W refresh=30000 service="influxdb" visibility=[sys_chart_period==1]
+ // Chart item=Speedtest_ResultUp period=M refresh=30000 service="influxdb" visibility=[sys_chart_period==2]
+ // Chart item=Speedtest_ResultUp period=Y refresh=30000 service="influxdb" visibility=[sys_chart_period==3]
+ // }
+ }
+ // Frame label="Weather" {
+ // Text item=Weather_Temperature valuecolor=[Weather_LastUpdate=="NULL"="lightgray",Weather_LastUpdate>90="lightgray",>25="orange",>15="green",>5="orange",<=5="blue"] {
+ // Frame {
+ // Text item=Weather_Temp_Max valuecolor=[>25="orange",>15="green",>5="orange",<=5="blue"]
+ // Text item=Weather_Temp_Min valuecolor=[>25="orange",>15="green",>5="orange",<=5="blue"]
+ // Text item=Weather_LastUpdate visibility=[Weather_LastUpdate>30] valuecolor=[Weather_LastUpdate>120="orange", Weather_LastUpdate>300="red"]
+ // }
+ // Frame {
+ // Switch item=Weather_Chart_Period label="Chart Period" icon="chart" mappings=[0="Hour", 1="24h", 2="7gg"]
+ // Chart item=Weather_Chart legend=true period=h refresh=600000 visibility=[Weather_Chart_Period==0, Weather_Chart_Period=="NULL"]
+ // Chart item=Weather_Chart legend=true period=D refresh=3600000 visibility=[Weather_Chart_Period==1]
+ // Chart item=Weather_Chart legend=true period=W refresh=3600000 visibility=[Weather_Chart_Period==2]
+ // }
+ // }
+ // Text label="Astronomical Data" icon="sun" {
+ // Text item=Sun_Elevation
+ // Text item=Sun_Azimuth
+ // Text item=Sunrise_Time
+ // Text item=Sunset_Time
+ // Text item=Moon_Elevation
+ // Text item=Moon_Azimuth
+ // Text item=Moon_Phase
+ // }
+ // }
+ // Frame label="Demo" {
+ // Text item=CurrentDate
+ // Text label="Group Demo" icon="firstfloor" {
+ // Switch item=Lights mappings=[OFF="All Off"]
+ // Group item=Heating
+ // Group item=Windows
+ // Text item=Temperature
+ // }
+ // Text label="Widget Overview" icon="chart" {
+ // Frame label="Binary Widgets" {
+ // Switch item=DemoSwitch label="Toggle Switch"
+ // Switch item=DemoSwitch label="Button Switch" mappings=[ON="On"]
+ // }
+ // Frame label="Discrete Widgets" {
+ // Selection item=Scene_General label="Scene Selection" mappings=[0=off, 1=TV, 2=Dinner, 3=Reading]
+ // Switch item=Scene_General label="Scene" mappings=[1=TV, 2=Dinner, 3=Reading]
+ // Setpoint item=Temperature_Setpoint minValue=16 maxValue=28 step=0.5
+ // }
+ // Frame label="Percent-based Widgets" {
+ // Slider item=DimmedLight switchSupport
+ // Colorpicker item=RGBLight icon="slider"
+ // Switch item=DemoShutter
+ // Slider item=DemoBlinds
+ // }
+ // Frame label="Map/Location" {
+ // Mapview item=EgalwareLocation icon=movecontrol height=10
+ // }
+ // }
+ // Text label="Multimedia" icon="video" {
+ // Frame label="Radio Control" {
+ // Selection item=Radio_Station label="Radio" mappings=[0=off, 1=HR3, 2=SWR3]
+ // Slider item=Volume icon="soundvolume"
+ // }
+ // Frame label="Multimedia Widgets" {
+ // Image url="https://raw.github.com/wiki/openhab/openhab/images/features.png" label="openHAB" {
+ // Text label="https://www.openHAB.org" icon="icon"
+ // }
+ // Video url="https://www.openhab.org/assets/smarthome.mp4"
+ // Webview url="https://en.m.wikipedia.org/w/index.php?title=Main_Page" height=8
+ // Image url="http://fpoimg.com/320x240?text=openHAB" item=ImageURL
+ // }
+ // }
+ // }
+}
+
+// vim: syntax=Xtend
diff --git a/Egalware/sitemaps/readme.txt b/Egalware/sitemaps/readme.txt
new file mode 100644
index 0000000..85c7a47
--- /dev/null
+++ b/Egalware/sitemaps/readme.txt
@@ -0,0 +1,5 @@
+Your sitemap definitions go here.
+All sitemap files have to have the ".sitemap" file extension and must follow a special syntax.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/sitemaps.html
diff --git a/Egalware/sounds/barking.mp3 b/Egalware/sounds/barking.mp3
new file mode 100644
index 0000000..5a3c41d
Binary files /dev/null and b/Egalware/sounds/barking.mp3 differ
diff --git a/Egalware/sounds/doorbell.mp3 b/Egalware/sounds/doorbell.mp3
new file mode 100644
index 0000000..7a8a5a3
Binary files /dev/null and b/Egalware/sounds/doorbell.mp3 differ
diff --git a/Egalware/things/egalware.things b/Egalware/things/egalware.things
new file mode 100644
index 0000000..19a6029
--- /dev/null
+++ b/Egalware/things/egalware.things
@@ -0,0 +1,16 @@
+// yahooweather:weather:Pedrengo [ location=6534499 ]
+
+// astro:sun:home [ geolocation="45.69,9.74", interval=60 ]
+// astro:moon:home [ geolocation="45.69,9.74", interval=60 ]
+
+// ntp:ntp:demo [ hostname="it.pool.ntp.org", refreshInterval=60, refreshNtp=30 ]
+
+Thing network:pingdevice:sw10g [ hostname="10.74.82.10" ]
+Thing network:pingdevice:gw [ hostname="10.74.82.253" ]
+Thing network:pingdevice:modem [ hostname="192.168.0.254" ]
+Thing network:pingdevice:gdns [ hostname="8.8.8.8" ]
+Thing network:pingdevice:hv03 [ hostname="10.74.82.243" ]
+Thing network:pingdevice:hv04 [ hostname="10.74.82.244" ]
+Thing network:speedtest:local "SpeedTest 50Mo" @ "Internet" [url="https://bouygues.testdebit.info/", fileName="50M.iso"]
+
+// vim: syntax=Xtend
\ No newline at end of file
diff --git a/Egalware/things/readme.txt b/Egalware/things/readme.txt
new file mode 100644
index 0000000..27b6689
--- /dev/null
+++ b/Egalware/things/readme.txt
@@ -0,0 +1,5 @@
+Your thing definitions go here.
+All thing files have to have the ".things" file extension and must follow a special syntax.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/things.html
diff --git a/Egalware/transform/de.map b/Egalware/transform/de.map
new file mode 100644
index 0000000..8cc1579
--- /dev/null
+++ b/Egalware/transform/de.map
@@ -0,0 +1,3 @@
+CLOSED=zu
+OPEN=offen
+NULL=undefiniert
diff --git a/Egalware/transform/divide100.js b/Egalware/transform/divide100.js
new file mode 100644
index 0000000..dcb2587
--- /dev/null
+++ b/Egalware/transform/divide100.js
@@ -0,0 +1,8 @@
+// Wrap everything in a function (no global variable pollution)
+// variable "input" contains data passed by openHAB
+(function(inputData) {
+ // on read: the polled number as string
+ // on write: openHAB command as string
+ var DIVIDE_BY = 100;
+ return parseFloat(inputData) / DIVIDE_BY;
+})(input)
\ No newline at end of file
diff --git a/Egalware/transform/en.map b/Egalware/transform/en.map
new file mode 100644
index 0000000..bd08f17
--- /dev/null
+++ b/Egalware/transform/en.map
@@ -0,0 +1,4 @@
+CLOSED=closed
+OPEN=open
+NULL=unknown
+
\ No newline at end of file
diff --git a/Egalware/transform/it.map b/Egalware/transform/it.map
new file mode 100644
index 0000000..51cc4f7
--- /dev/null
+++ b/Egalware/transform/it.map
@@ -0,0 +1,7 @@
+CLOSED=chiuso
+OPEN=aperto
+NULL=nullo
+AUTUMN=AUTUNNO
+WINTER=INVERNO
+SPRING=PRIMAVERA
+SUMMER=ESTATE
diff --git a/Egalware/transform/readme.txt b/Egalware/transform/readme.txt
new file mode 100644
index 0000000..6933c16
--- /dev/null
+++ b/Egalware/transform/readme.txt
@@ -0,0 +1,5 @@
+Transformations like map or jsonpath can utilize configuration files with data definitions.
+These files have their specific file extensions and syntax definition.
+
+Check out the openHAB documentation for more details:
+https://www.openhab.org/docs/configuration/transformations.html