SoC Modul Skoda

Anfragen zum Erstellen von Modulen, Fragen zu Modulen
Bucky2k
Beiträge: 392
Registriert: Sa Nov 09, 2019 1:17 pm

Re: SoC Modul Skoda

Beitrag von Bucky2k »

Ok, jetzt kann ich es einordnen. Das VAG Modul wird nicht mehr unterstützt und ab Version >1.9.220 verschwindet auch die Option Skoda, da nunmehr ausschließlich VW, ID und Porsche noch funktionieren. In den höheren Versionen, wenn Du auf die Beta umschaltest, kommt ein Nachfolgemodul namens EVCC in die Liste. Dieses unterstützt wiederum Skoda, wird aktiv von AndiG im Rahmen seines EVCC Projektes gewartet und kostet daher 2€ per Monat.

Gruß

Bucky
hhoefling
Beiträge: 627
Registriert: So Jul 25, 2021 2:32 pm

Re: SoC Modul Skoda

Beitrag von hhoefling »

Ich habe ein Weg gefunden die SoC Angabe aus dem Internet zu bekommen.

Als Basis verwende Ich dieses Script das ich bei bei Github gefunden habe.
https://github.com/lendy007/skodaconnect

Mit eIn wenig Anpassung habe ich nun ein Pyhton3 Script das mir
die Daten in einen neuen Skoda-Zweig des Mosoquito schiebt.
Es sind wohl alle Daten enthalten die auch in der MySkoda Android App dargestellt werden.
Ich habe mich auf eine Teilmenge beschränkt.

Code: Alles auswählen

Skoda/outside_temperature 18.4
Skoda/charging 0
Skoda/charging_cable_connected False
Skoda/charging_cable_locked True
Skoda/climatisation_target_temperature 22.0
Skoda/combustion_range 217
Skoda/charge_max_ampere 13
Skoda/charging_time_left 00:00
Skoda/trip_last_duration 116
Skoda/climatisation_without_external_power True
Skoda/distance xxxx
Skoda/door_closed_right_front True
Skoda/battery_level 100
Skoda/service_inspection xxx
Skoda/refresh_data None
Skoda/service_inspection_distance xxxxx
Skoda/electric_climatisation False
Skoda/external_power False
Skoda/request_in_progress False
Skoda/trip_last_length 47
Skoda/trip_last_average_speed 25
Skoda/trip_last_average_electric_consumption 15.3
Skoda/trunk_locked True
Skoda/trunk_closed True
Skoda/hood_closed True
Skoda/door_closed_left_back True
Skoda/door_closed_right_back True
Skoda/door_locked True
Skoda/door_closed_left_front True
Skoda/door_locked True
Skoda/window_heater False
Skoda/departure1 False
Skoda/departure2 False
Skoda/departure3 False
Zusätzlich wirden die folgen Werte in den openWB Zweig geschrieben.

Code: Alles auswählen

openWB/lp/1/%Soc 100
openWB/lp/1/Skoda_outside_temperature  18.4
openWB/lp/1/Skoda_charging  0
openWB/lp/1/Skoda_trip_last_average_electric_consumption  15.3
openWB/lp/1/Skoda_combustion_range  217
openWB/lp/1/Skoda_charge_max_ampere  13
openWB/lp/1/Skoda_charging_time_left  00:00
openWB/lp/1/Skoda_charging_cable_connected  False
openWB/lp/1/Skoda_charging_cable_locked  True
Die Soc Angabe erscheint mit dem MQTT-Soc-Modul auch in der Weboberfläche daher denke ich das ich
die Werte nicht noch zusätzlich in die Ramdisk schreiben muss.

Nun muss ich nur noch dafür sorgen das dieses Scipt periodisch aufgerufen wird
um die Daten zu aktualiseren.
Hierzu brauche ich Tip wo man dies in der Ablauflogig von openWB am besten unterbringt.

Später werde ich dann sehen wo ich die zusätzlichen Werte aus "openWB/lp/1/Skoda_*" sinnvoll nutzen kann.
gruss
Heinz

6kWp PV+Akku von RCT Power,+Tibber,+Shelly's
Skoda Citigo e-iV, openWB series2 standart+
mit openWB_lite (auf Basis der openWB 1.9.244+ Okt.2021)
Github: https://github.com/hhoefling/openWB_lite
Der-Kieler
Beiträge: 368
Registriert: Fr Sep 11, 2020 10:13 am
Wohnort: Kiel

Re: SoC Modul Skoda

Beitrag von Der-Kieler »

Klasse!
Ich bin sehr gespannt, ob Du es hinbekommst. Mehr als moralische Unterstützung kann ich leider nicht geben.
6KWp mit Solaredge StorEdge Dreiphasen-Wechselrichter SE5K mit LG Chem RESU 6.5 Speicher und 6KWp Modulleistung.
Zwei open WB Custom mit Phasenumschaltung (Mai 2021).
Tesla Model 3 aus 2019 und Eniaq aus 04.2022.
hhoefling
Beiträge: 627
Registriert: So Jul 25, 2021 2:32 pm

Re: SoC Modul Skoda

Beitrag von hhoefling »

ich bin zwar ein alter Hase was Programieren angeht, aber Python/MQTT sind neuland für mich.
Auch habe ich bisher nicht mit Github gearbeitet.

Gibt's irgendwo eine Anleitung wie man Code zur OpenWB beisteuern kann?

PS:
Noch ist die openWB nicht da, aber der SoC wartet schon. :mrgreen: :mrgreen:
gruss
Heinz

6kWp PV+Akku von RCT Power,+Tibber,+Shelly's
Skoda Citigo e-iV, openWB series2 standart+
mit openWB_lite (auf Basis der openWB 1.9.244+ Okt.2021)
Github: https://github.com/hhoefling/openWB_lite
Stevie_AN
Beiträge: 301
Registriert: Di Jan 19, 2021 11:04 am

Re: SoC Modul Skoda

Beitrag von Stevie_AN »

Super Neuigkeiten!

Ich habe zwar keine Ahnung vom Programmieren, aber einen Skoda und eine OpenWB. Bin gerne bereit zu Testen, wenn's was zum Testen gibt ;)
LP1: OpenWB-custom 1p3p; LP2: go-eCharger HOMEfix; PV1: 7,150 kWp Sunny Tripower 7000TL-20, PV2: 4,440 kWp SB 4000TL-20, Sunny Home Manager 2.0; Škoda Citigo e iV, Smart ED3
Stevie_AN
Beiträge: 301
Registriert: Di Jan 19, 2021 11:04 am

Re: SoC Modul Skoda

Beitrag von Stevie_AN »

Also... ich hab auch ein bisschen mit Skodaconnect experimentiert. Mein aktueller Stand:

Separater Raspberry, da Python3 benötigt - den Python auf der openWB hab ich mir noch nicht getraut, upzudaten.

Dann das Skodaconnect von Github installieren: python3 -m pip install skodaconnect

Über die Konsole kann ich dann ein Python-Script aufrufen, welches mir zurückgibt:

stefan@ubuntu:/usr/sbin$ python3 skodaconnect_min.py
Content-Type: text/plain

83

Wobei die 83 der SoC ist.

Eigentlich war der Plan, das ausführbare Script über den Brower aufrufen zu können, den HTTP-Aufruf dann in der openWB als SoC-Abrufadresse anzugeben, aber das hab ich leider nicht hinbekommen.

Vielleicht hat ja noch jemand Lust und mehr Ahnung, um sich dem Thema mal anzunehmen?

Schöne Grüße...

Stefan


P.S.: Script kann ich gerne mal hier angeben - Username und Passwort sind entsprechend einzusetzen:

Code: Alles auswählen

#!/usr/bin/env python3
import pprint
import asyncio
import logging
import inspect
import time
import sys
import os
from aiohttp import ClientSession
from datetime import datetime

currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0, parentdir)

try:
    from skodaconnect import Connection
except ModuleNotFoundError:
    print("Unable to import library")
    sys.exit(1)

logging.basicConfig(level=logging.ERROR)

USERNAME = 'xxxxxxxxxxxxxxxxxxxxxxxx'
PASSWORD = 'xxxxxxxxxxx'
PRINTRESPONSE = True




COMPONENTS = {
    'sensor': 'sensor',
    'binary_sensor': 'binary_sensor',
    'lock': 'lock',
    'device_tracker': 'device_tracker',
    'switch': 'switch',
}

RESOURCES = [
		"adblue_level",
		"auxiliary_climatisation",
		"battery_level",
		"charge_max_ampere",
		"charger_action_status",
		"charging",
                "charge_rate",
                "charging_power",
		"charging_cable_connected",
		"charging_cable_locked",
		"charging_time_left",
		"climater_action_status",
		"climatisation_target_temperature",
		"climatisation_without_external_power",
		"combined_range",
		"combustion_range",
                "departure1",
                "departure2",
                "departure3",
		"distance",
		"door_closed_left_back",
		"door_closed_left_front",
		"door_closed_right_back",
		"door_closed_right_front",
		"door_locked",
		"electric_climatisation",
		"electric_range",
		"energy_flow",
		"external_power",
		"fuel_level",
		"hood_closed",
		"last_connected",
		"lock_action_status",
		"oil_inspection",
		"oil_inspection_distance",
		"outside_temperature",
		"parking_light",
		"parking_time",
		"pheater_heating",
		"pheater_status",
		"pheater_ventilation",
		"position",
		"refresh_action_status",
		"refresh_data",
		"request_in_progress",
		"request_results",
		"requests_remaining",
		"service_inspection",
		"service_inspection_distance",
		"sunroof_closed",
		"trip_last_average_auxillary_consumption",
		"trip_last_average_electric_consumption",
		"trip_last_average_fuel_consumption",
		"trip_last_average_speed",
		"trip_last_duration",
		"trip_last_entry",
		"trip_last_length",
		"trip_last_recuperation",
		"trip_last_total_electric_consumption",
		"trunk_closed",
		"trunk_locked",
		"vehicle_moving",
		"window_closed_left_back",
		"window_closed_left_front",
		"window_closed_right_back",
		"window_closed_right_front",
		"window_heater",
		"windows_closed"
]

def is_enabled(attr):
    """Return true if the user has enabled the resource."""
    return attr in RESOURCES

async def main():
    """Main method."""
    async with ClientSession(headers={'Connection': 'keep-alive'}) as session:
        
        connection = Connection(session, USERNAME, PASSWORD, PRINTRESPONSE)
        
        if await connection.doLogin():
        
            instruments = set()
            for vehicle in connection.vehicles:
                dashboard = vehicle.dashboard(mutable=True)

                for instrument in (
                        instrument
                        for instrument in dashboard.instruments
                        if instrument.component in COMPONENTS
                        and is_enabled(instrument.slug_attr)):

                    instruments.add(instrument)
                            
                

        else:
            return False

        # Output all instruments and states
        
        print ('Content-Type: text/plain')
        print ('')
               
        
        for instrument in instruments:
            
            if "battery_level"  in instrument.attr :
               print (str(instrument.state))
             
            
            #print(f'{instrument.full_name} - ({instrument.attr})')
            #print(f'\tstr_state: {instrument.str_state} - state: {}')
            #print(f'\tattributes: {instrument.attributes}')
            #print("")

        
       
            # Examples for using set functions:
            #vehicle.set_refresh()                                          # Takes no arguments, will trigger forced update
            #vehicle.set_charger(action = "start")                          # action = "start" or "stop"
            #vehicle.set_charger_current(value)                             # value = 1 <=> 255 (PHEV: 252 for reduced and 254 for max)
            #vehicle.set_battery_climatisation(mode = False)                # mode = False or True
            #vehicle.set_climatisation(mode = "auxilliary", spin="1234")    # mode = "auxilliary", "electric" or "off". spin is S-PIN and only needed for aux heating
            #vehicle.set_climatisation_temp(temperature = 22)               # temperature = integer from 16 to 30
            #vehicle.set_window_heating(action = "start")                   # action = "start" or "stop"
            #vehicle.set_lock(action = "unlock", spin = "1234")             # action = "unlock" or "lock". spin = SPIN, needed for both
            #vehicle.set_pheater(mode = "heating", spin = "1234")           # action = "heating", "ventilation" or "off". spin = SPIN, not needed for off
            #vehicle.set_charge_limit(limit = 30)                           # limit = 0,10,20,30,40,50
            #vehicle.set_timer_active(id = 1, action = "on"}                # id = 1, 2, 3, action = "on" or "off".
            #vehicle.set_timer_schedule(id = 1,                             # id = 1, 2, 3
            #    schedule = {                                               # Set the departure time, date and periodicity
            #        "enabled": True,                                       # Set the timer active or not, True or False
            #        "recurring": True,                                     # True or False for recurring
            #        "date": "2021-05-21",                                  # Date for departure, not needed for recurring
            #        "time": "08:00",                                       # Time for departure, always needed
            #        "days": "nyynnnn"                                      # Days (mon-sun) for recurring schedule, n=disable, y=enable
            #    })

            # Example using a set function
            #if await vehicle.set_charge_limit(limit=40):
            #    print("Request completed successfully.")
            #else:
            #    print("Request failed.")
            #print(vehicle.timer_action_status)

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
Zuletzt geändert von Stevie_AN am So Sep 05, 2021 9:14 pm, insgesamt 1-mal geändert.
LP1: OpenWB-custom 1p3p; LP2: go-eCharger HOMEfix; PV1: 7,150 kWp Sunny Tripower 7000TL-20, PV2: 4,440 kWp SB 4000TL-20, Sunny Home Manager 2.0; Škoda Citigo e iV, Smart ED3
hhoefling
Beiträge: 627
Registriert: So Jul 25, 2021 2:32 pm

Re: SoC Modul Skoda

Beitrag von hhoefling »

Python3 ist aber auf dem openwb raspi drauf.
Du must nur explizit phyton3 statt python aufrufen.

Entsprechend dann pip3 statt pip
gruss
Heinz

6kWp PV+Akku von RCT Power,+Tibber,+Shelly's
Skoda Citigo e-iV, openWB series2 standart+
mit openWB_lite (auf Basis der openWB 1.9.244+ Okt.2021)
Github: https://github.com/hhoefling/openWB_lite
openWB
Site Admin
Beiträge: 7906
Registriert: So Okt 07, 2018 1:50 pm

Re: SoC Modul Skoda

Beitrag von openWB »

Wenn das läuft dann gern als SoC Modul mit drinnen.
Der Code als Zitat wird aufgrund der Einrückungen so allerdings nichts.
Supportanfragen bitte NICHT per PN stellen.
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
hhoefling
Beiträge: 627
Registriert: So Jul 25, 2021 2:32 pm

Re: SoC Modul Skoda

Beitrag von hhoefling »

Also ich bin weiterhin dran...
Nur bisher warte ich noch immer auf meine OpenWB.
Ich mache also bisher nur "Trockenübungen" mit einem eigenen Raspi4.
Aber ein SOC Module für den Citigo wird es bald wieder geben.
gruss
Heinz

6kWp PV+Akku von RCT Power,+Tibber,+Shelly's
Skoda Citigo e-iV, openWB series2 standart+
mit openWB_lite (auf Basis der openWB 1.9.244+ Okt.2021)
Github: https://github.com/hhoefling/openWB_lite
Stevie_AN
Beiträge: 301
Registriert: Di Jan 19, 2021 11:04 am

Re: SoC Modul Skoda

Beitrag von Stevie_AN »

hhoefling hat geschrieben: Mi Sep 08, 2021 7:24 pm Aber ein SOC Module für den Citigo wird es bald wieder geben.
Wow, super! Vielen Dank für die Arbeit und die Mühe. Ich freue mich total auf das Skoda-SoC-Modul.

Kann ich denn schon irgendwas testen? ;)
LP1: OpenWB-custom 1p3p; LP2: go-eCharger HOMEfix; PV1: 7,150 kWp Sunny Tripower 7000TL-20, PV2: 4,440 kWp SB 4000TL-20, Sunny Home Manager 2.0; Škoda Citigo e iV, Smart ED3
Antworten