Hi Lars, Rudi,
okay. 1st step is to get pyze run. Details you can find here. Its very simple
If this runs fine, just add in the src status.py file following code:
# print(
# tabulate(
# [v for v in vehicle_table if v is not None]
# )
# )
headers = {'Content-Type': 'text/plain','Accept': 'application/json',}
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_RemainingRange/state', headers=headers, data='{:.1f}'.format(status['batteryAutonomy']))
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_ChargeLevel/state', headers=headers, data='{}'.format(status['batteryLevel']))
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_RemainingEnergy/state', headers=headers, data='{}'.format(status['batteryAvailableEnergy']))
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_Milage/state', headers=headers, data="{} km".format(mileage['totalMileage']))
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_Location/state', headers=headers, data="{:.8f},{:.8f}".format(location['gpsLatitude'], location['gpsLongitude']))
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_Plugged/state', headers=headers, data=plug_state.name)
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_Charging/state', headers=headers, data=charge_state.name)
#requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_ChargeRate/state', headers=headers, data="{}".format(status['chargingInstantaneousPower']))
#requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_RemainingTime/state', headers=headers, data= status['chargingRemainingTime'])
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_ChargingMode/state', headers=headers, data=charge_mode.value if hasattr(charge_mode, 'value') else charge_mode)
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_BatteryTemp/state', headers=headers, data="{}".format(status['batteryTemperature']) )
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_LastUpdate/state', headers=headers, data=status['timestamp'])
requests.put('http://YOUR_IP:8080/rest/items/RenaultZEServices_Zoe_ExtTemp/state', headers=headers, data="{}".format(hvac['externalTemperature']) )
As you can see, I just simply commented the print command and added some simple lines.
Keep in mind, this is a quick and dirty solution. would be more nice if I create a file with all items etc.
Appropriate items:
Group gZoe "Renault Zoe"
Number RenaultZEServices_Zoe_ChargeLevel "Batterielevel [%d %%]"
Number RenaultZEServices_Zoe_RemainingRange "Restreichweite [%.1f KM]"
Number RenaultZEServices_Zoe_RemainingEnergy "VerfĂŒgbare Energie [%d kWh]"
Number RenaultZEServices_Zoe_Milage "Kilometerstand [%.1f KM]"
Location RenaultZEServices_Zoe_Location "Koordinaten"
String RenaultZEServices_Zoe_Plugged "Ladestecker [%s]"
String RenaultZEServices_Zoe_Charging "Ladezustand [%s]"
Number RenaultZEServices_Zoe_ChargeRate "Ladeleistung [%.2f W]"
Number RenaultZEServices_Zoe_RemainingTime "Verbleibende Ladezeit [%.1f Min]"
String RenaultZEServices_Zoe_ChargingMode "Ladeverhalten [%s]"
Number RenaultZEServices_Zoe_BatteryTemp "Batterietemperatur [%d °C]"
Number RenaultZEServices_Zoe_ExtTemp "AuĂentemperatur [%d °C]"
DateTime RenaultZEServices_Zoe_LastUpdate "Letzter Server Anfrage [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"
String RenaultZEServices_Zoe_VIN "Fahrzeugdetails [%s]"
String RenaultZEServices_Zoe_Brand "Fahrzeugdetails [%s]"
String RenaultZEServices_Zoe_Model "Fahrzeugdetails [%s]"
Switch RenaultZEServices_Zoe_Refresh "Server Refresh" {autoupdate="false"}
Sitemap:
Frame label="Zoe" {
Text item=RenaultZEServices_Zoe_ChargeLevel
Text item=RenaultZEServices_Zoe_RemainingRange
Text item=RenaultZEServices_Zoe_RemainingEnergy
Text item=RenaultZEServices_Zoe_Milage
Mapview item=RenaultZEServices_Zoe_Location height=10
Text item=RenaultZEServices_Zoe_Plugged
Text item=RenaultZEServices_Zoe_Charging
Text item=RenaultZEServices_Zoe_ChargeRate
Text item=RenaultZEServices_Zoe_RemainingTime
Text item=RenaultZEServices_Zoe_ChargingMode
Text item=RenaultZEServices_Zoe_BatteryTemp
Text item=RenaultZEServices_Zoe_LastUpdate
Text item=RenaultZEServices_Zoe_ExtTemp
Text item=RenaultZEServices_Zoe_VIN
Text item=RenaultZEServices_Zoe_Model
Text item=RenaultZEServices_Zoe_Brand
Switch item=RenaultZEServices_Zoe_Refresh mappings=[ ON="Refresh!" ]
}
For refresh I added a rule:
rule "RenaultZEService_Zoe_Refresh_server"
when
Item RenaultZEServices_Zoe_Refresh changed or
Time cron "0 0 * * * ?" or
System started
then
val results = executeCommandLine("sudo -u pi /usr/local/bin/pyze status --km", 100000)
logInfo("results", "results " + results)
end
Note: you have have to add openhab into your sudoers:
sudo visudo -f /etc/sudoers.d/010_pi-nopasswd
and add:
openhab ALL=(ALL) NOPASSWD: ALL
I am still not ready with all items, and to highlight again: this is a quick and dirty solution. I didnt respect any coding rules etcâŠ
I will try to finish everything in the comming days and will update this thread.
Try, If you need support, let me knowâŠ
Regards