FHEM und Carwings/ConnectEV/You+NISSAN-API (Modul 98_Carwings.pm)

Begonnen von c2j2, 17 Oktober 2018, 09:10:37

Vorheriges Thema - Nächstes Thema

Groepi

Hallo zusammen,

es gibt heute generell Probleme mit dem Nissan Server. Selbst die Orginal App geht nicht mehr.
Was bei mir nervend ist, das ich mich immer nur mit einer App verbinden kann. Ich nutze eigentlich auf dem iPhone Leafter flieg aber wenn ich auf die Orginal App wechsle raus. Umgekehrt genau so.

Und das selber Fehlerbild (oder ist es ein Feature) sehe ich auch bei der FHEM Anbindung.
Toll wäre wenn man die Ladung Ein und Ausschalten könnte per FHEM und vor allem die Klima Anlage anschalten könnte. Ist das machbar?

Grüße

Gröpi

Puschel74

Hallo,

ZitatDas Abfrageintervall wählst Du in den DOIFs meines Beitrags - jeder "SET <name> QUERY BATTERY" ruft es ein einziges Mal ab (notfalls mit ein paar Wiederholungen bis zu ca. 5 Minuten).
Das ist mir bekannt.

Mit einem "Workaround" bekomme ich das auch hin  :D

Ich dachte eher so in die Richtung wie Presence - ein eigenes Intervall für present und ein eigenes für absent.
Hier dann für Laden oder eben nicht Laden resp. connected und not connected oder vllt. per Attribut einstellbar auf welchen Zustand welches Intervall greifen soll.

Hintergrund: Da ich in der Garage nur 230 V/50 Hz zur Verfügung habe kann ich mir keine Wallbox installieren.
Grad gesehen: 3,7 kW einphasig. Da reicht mir aber auch das Original Steckdosenladekabel von Nissan.
Das funktioniert auch einwandfrei dauert aber halt etwas länger.
Ja ok. Extra für mich braucht es das Gimmick mit dem Abfrageintervall dann nicht.
Per at und notify bekomme ich das auch passend umgestellt - ja, ich benutze kein DOIF und das bleibt auch so  :-X

ZitatDie Grenze: keine Ahnung. Da habe ich noch nichts dazu gesehen, daher mache ich es alle 30 Minuten , wenn ich nicht lade, und alle 5, wenn ich lade.
Sorry da hab ich mich missverständlich ausgedrückt.
Ich meinte eigentlich die Anzahl an Geräten die per App (oder API) die Abfragen durchführen.

Zitat von: Groepi am 20 November 2018, 17:25:51
Was bei mir nervend ist, das ich mich immer nur mit einer App verbinden kann. Ich nutze eigentlich auf dem iPhone Leafter flieg aber wenn ich auf die Orginal App wechsle raus. Umgekehrt genau so.

Und das selber Fehlerbild (oder ist es ein Feature) sehe ich auch bei der FHEM Anbindung.
Hm, wenn ich per FHEM die Abfrage mache und sie klappt dann habe ich auch in der App die Daten zur Verfügung ohne das ich in der App eine eigene Abfrage starte.
Ich hatte mich nämlich gestern erst gewundert warum in der App die aktuellen Daten stehen obwohl ich keine Abfrage gestartet hatte (per App).
Aber die Uhrzeit stimmte mit der FHEM-Abfrage überein.
Muss ich grad nochmal schauen (wenn der Server wieder mal mitspielt  >:( ).

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

c2j2

ZitatGrad gesehen: 3,7 kW einphasig. Da reicht mir aber auch das Original Steckdosenladekabel von Nissan.
Das kann aber nur 10 A = 2.3 kW.

3.7 kW kannst Du bspw mit dem go-eCharger. Auch einphasig.

Puschel74

Hallo,

Zitat von: c2j2 am 26 November 2018, 20:25:42
Das kann aber nur 10 A = 2.3 kW.
Das ist richtig - das reicht mir aber mehr als locker.

Zumal das Auto die meiste Zeit eh nur rumsteht und nichts macht  ;D

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Herjemine

Hallo c2j2,

also bei mir funktioniert es mit der Abfrage if (defined($res->{VehicleInfoList})) nicht,
ist bei mir im $res nicht vorhanden


2018.12.11 15:29:00 1: +++JOB login returned: $VAR1 = {
          'CustomerInfo' => {
                              'RegionCode' => 'NE',
                              'Timezone' => 'Europe/Paris',
                              'VehicleInfo' => {
                                                 'NAVIID' => '1002000xxx',
                                                 'NonaviFlg' => 'false',
                                                 'CarImage' => 'carimg6.png',
                                                 'DCMID' => '20130000xxx',
                                                 'SIMID' => '894608000010xxxx',
                                                 'MSN' => '46719000xxx',
                                                 'CarName' => 'LEAF',
                                                 'VIN' => 'JN1FAAZE0U00xxx',
                                                 'EncryptedNAVIID' => '798DA0C7983FF4B5FF793CDAxxxA',
                                                 'LastDCMUseTime' => '2018/12/11 13:13',
                                                 'UserVehicleBoundTime' => '2017-04-18T14:02:49Z',
                                                 'LastVehicleLoginTime' => ''
                                               },
                              'Language' => 'de_DE',
                              'UserId' => 'diexxx',
                              'OwnerId' => '3097xxx',
                              'VehicleImage' => '/content/language/default/images/img/ph_car.jpg',
                              'UserVehicleBoundDurationSec' => '946771200',
                              'Country' => 'DE',
                              'Nickname' => 'haxxxx,
                              'EMailAddress' => 'diexxxxx'
                            },
          'EncAuthToken' => 'DEEF6C8FF3D04295AB6171BE76681F125F7EAA0F5081607FD94C740AD77D538EACxxxx',
          'UserInfoRevisionNo' => '1',
          'status' => 200,
          'vehicle' => {
                         'profile' => {
                                        'gdcPassword' => '',
                                        'gdcUserId' => '',
                                        'encAuthToken' => '1B7E9BC5A721B6CABCAC797F384E1766A35817C3A8326F694ECA5xxxx',
                                        'nickname' => 'halterle',
                                        'statusDate' => '2017/03/10 23:00',
                                        'status' => 'true',
                                        'dcmId' => '2013000xxx',
                                        'vin' => 'JN1FAAZE0U0xxx'
                                      }
                       },
          'vehicleInfo' => [
                             {
                               'custom_sessionid' => 'AhMRLLv64PwA1Mt3UaY3Hg02cSzJ8LtGGX2EI5onWduRasDS0uqvZzruKSD910gxZwzd0VjiFpqwrKq/VGwd+GN4jRohMxxxxx',
                               'nickname' => 'haxxxx',
                               'telematicsEnabled' => 'true',
                               'vin' => 'JN1FAAZE0U0xxxx',
                               'charger20066' => 'false'
                             }
                           ]
        };

------------------------------1


Gruß Hermann

Herjemine

Hallo c2j2,

ich hab das 98_Carwings.pm beim mir jetzt so geändert, dass er die Daten richtig abfragt.
Was mir aufgefallen ist, die Berechnung für den BatterySoc
readingsBulkUpdate($hash, "BatterySOC",  $res->{batteryCapacity} > 0 ? int(100 * $res->{batteryDegradation} / $res->{batteryCapacity}) : 0);

stimmt nicht, wenn durch Degradion schon Balken fehlen,
das gibt dann bei 12 von 11 Balken, die man bei Voller Ladung hat 109%  8)

Gruß Hermann Hermann

Herjemine

Hallo c2j2,

hast Du auch einmal darüber nachgedacht, auch über die API die Klima anzuschalten?
wäre nice dies auch über Fhem statt der lahmen App zu machen  8)

Gruß Hermann

Groepi

Hallo,

ja die Steuerung der Klima wäre echt toll. Ist es denn ein Problem das zu entwickeln?

Danke Gröpi

Moeti

Hallo c2j2!

Danke für das Modul. Ich hatte voriges Wochenende endlich Zeit, es zu installieren, und es hat alles auf Anhieb geklappt.

Mittlerweile hab ich gesehen, dass im ersten Post zwei Versionen zum Download zu finden sind. Welche ist die aktuelle? Könntest du vielleicht eine Versionsnummer und/oder ein Datum dazuschreiben?

Das Modul ist sehr "geschwätzig". Auch bei verbose 0 füllt es mir das logfile voll, insbesondere mit Sternen *. Vielleicht könnte man erst bei verbose 1 diese Meldungen ins log schreiben.


2018.12.14 19:15:00 2: DI_CarwingsUpdate: set Nissan query battery: query battery started
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************


Danke für deine Bemühungen!
lG
Michael

RaspberryPi 2, FHEM, Homematic, CUL, HMLAN, homebridge, Sonoff/Tasmota, Shelly, mqtt2
WH1080 per pywws, RaspiCam, Kostal PIKO 5.5,
Hörmann Supramatic mit UAP1, HM-SCI-3-FM, HM-LC-SW4-BA-PCB
SmartPi, Automower, Nissan Leaf/Carwings

c2j2

Zitat von: Herjemine am 12 Dezember 2018, 17:13:37
ich hab das 98_Carwings.pm beim mir jetzt so geändert, dass er die Daten richtig abfragt.
Was mir aufgefallen ist, die Berechnung für den BatterySoc
readingsBulkUpdate($hash, "BatterySOC",  $res->{batteryCapacity} > 0 ? int(100 * $res->{batteryDegradation} / $res->{batteryCapacity}) : 0);

stimmt nicht, wenn durch Degradion schon Balken fehlen,
das gibt dann bei 12 von 11 Balken, die man bei Voller Ladung hat 109%  8)

Gruß Hermann Hermann

Moin "Hermann Hermann" ;)

Kannst Du mir die Änderungen zuschicken, dann kann ich das einpflegen. Habe derzeit leider weniger Zeit, als ich gedacht hatte.

(das mit dem Array "vehicleList" habe ich gerade erledigt, fehlt die Balkenzahl-Einrechnung). Den Code hatte ich kopiert (https://github.com/fbarriere/script.leaf.control/blob/master/addon.py):


    capacity         = float(battery_status.answer[u"batteryCapacity"])
    degradation      = float(battery_status.answer[u"batteryDegradation"])
    charge           = int((degradation / capacity) * 100)


c2j2

Zitat von: Moeti am 14 Dezember 2018, 19:34:02
Das Modul ist sehr "geschwätzig". Auch bei verbose 0 füllt es mir das logfile voll, insbesondere mit Sternen *. Vielleicht könnte man erst bei verbose 1 diese Meldungen ins log schreiben.


2018.12.14 19:15:00 2: DI_CarwingsUpdate: set Nissan query battery: query battery started
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************
*************************************************************************


Danke für deine Bemühungen!
lG
Michael

Strange. Das kommt hier nicht, und ich wüßte auch nicht, wodurch. Eine Ausgabe von "*" durch meinen Code ist nicht eingebaut.

Ansonsten ändere einfach die


Carwings_Log($hash, 1, ...


durch


Carwings_Log($hash, 3, ...


Ich werde den Level demnächst erhöhen, wenn alles so läuft, wie ich mir das vorstelle. Oder per Attribut einstellbar ;)

c2j2


c2j2

Ich habe mir nun doch etwas Zeit genommen, und jetzt gibt es Neues:

a) die letzt-bekannten Batteriedaten (kein Life-Update beim Server, sondern dessen letzter Wert. Nicht unbedingt up to date, aber als Fallback ganz gut):

"set <name> query battery_cached"

Zitat
     2018-12-18 12:08:32   _CachedRecord_BatteryChargeMode NORMAL_CHARGING
     2018-12-18 12:08:32   _CachedRecord_BatteryPlugState CONNECTED
     2018-12-18 12:08:32   _CachedRecord_BatteryQuality 100
     2018-12-18 12:08:32   _CachedRecord_BatteryRemainingkWh 23
     2018-12-18 12:08:32   _CachedRecord_BatteryResult SUCCESS
     2018-12-18 12:08:32   _CachedRecord_BatterySOC 59
     2018-12-18 12:08:32   _CachedRecord_BatteryTime 2018/12/18 12:05

b) Klimaanlagen-Zustand:

"set <name> query climate_cached"

Zitat
     2018-12-18 12:18:22   _CachedRecord_ClimateChangeOperation STOP
     2018-12-18 12:20:00   _CachedRecord_ClimateChangeTime 2018/12/18 10:38
     2018-12-18 12:20:00   _CachedRecord_ClimateIncTemp 17.5°C
     2018-12-18 12:20:00   _CachedRecord_ClimateResult SUCCESS
     2018-12-18 12:19:44   _CachedRecord_ClimateScheduledTime 2018/12/19 07:00
     2018-12-18 12:18:22   _CachedRecord_ClimateTemp 22°C
     2018-12-18 12:20:00   _CachedRecord_ClimateTime 2018/12/18 11:37

Da kann man sich aber nicht drauf verlassen - die Climate-Werte sind öfters falsch.

Wenn man also im Moment "alles" wissen möchte:

"set <name> query battery_cached climate_cached climate_schedule battery"

c) Klimaanlage einschalten:

"set <name> AC on"

d) Klimaanlage ausschalten:

"set <name> AC off"

Das neue Modul ist hochgeladen.

Herjemine

Hallo c2j2,

das schaut super aus  :)
bekommst Du die Capacity und Degration wirklich in Gids?

     2018-12-18 12:06:04   BatteryCapacity 240
     2018-12-18 12:06:04   BatteryDegradation 142


bei mir kommt da von Carwings die Anzahl Balken, also 11 oder 12
hab dann für die SOC Berechnung einfach den festen Wert 12 verwendet.

Gruß Hermann


Puschel74

Hallo,

@c2j2:
Ein set <name> query climate_cached liefert mir
Zitat[ERROR Not a HASH reference at /media/hdd/fhem/FHEM/98_Carwings.pm line 669. (2018-12-19 18:22:18)]
zurück.
Wie man sieht liegt mein FHEM nicht unter /opt/fhem aber das sollte hoffentlich nicht das Problem sein.

@Herjemine
ZitatÜber meinen Leaf bekomme ich live GPS Daten als Readings ins fhem
Blöde Frage aber wie machst du das?

Grüße
Edith: Ein set <name> query battery_cached funktioniert:
Zitat_CachedRecord_BatteryChargeMode NOT_CHARGING 2018-12-19 18:03:16
_CachedRecord_BatteryPlugState NOT_CONNECTED 2018-12-19 18:03:16
_CachedRecord_BatteryQuality 100 2018-12-19 18:03:16
_CachedRecord_BatteryRemainingkWh 10 2018-12-19 18:03:16
_CachedRecord_BatteryResult SUCCESS 2018-12-19 18:03:16
_CachedRecord_BatterySOC 42 2018-12-19 18:03:16
_CachedRecord_BatteryTime 2018/12/19 18:02 2018-12-19 18:03:16
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.