summaryrefslogtreecommitdiff
path: root/src/content/post/mastodon-112636517953804787.md
blob: 1d0f0395c1c696ec355b9dbf0e68af6e87906c85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
---
title: "W końcu osiągnąłem kolejny kamień milowy w automatyzacji ..."
publishDate: "2024-06-18T07:47:48.191Z"
description: "W końcu osiągnąłem kolejny kamień milowy w automatyzacji zarządzania energia w kamperze. Ostatnio przestałem dostawać napięcie na akumulatorze od alternatora - ..."
tags:
  - diy
  - elektronika
  - microblog
  - pl
  - smartvan
  - vanlife
language: "pl"
sourceUrl: "https://mastodon.com.pl/@knightdave/112636517953804787"
author: "Dawid"
draft: false
---

W końcu osiągnąłem kolejny kamień milowy w automatyzacji zarządzania energia w kamperze.

Ostatnio przestałem dostawać napięcie na akumulatorze od alternatora - niby alternator sprawny i podciągając przewód prosto od wyjścia alternatora do akumulatora wszystko działa - pewnie coś z wiązka.

Termin u mechanika dopiero za 2 tygodnie - wiec co tu robić?

Od dawna chodził mi po głownie pomysł, aby jeden separator napięcia (ładowarka lądująca z alternatora cześć mieszkalna) podłączyć odwrotnie i w razie zostawienia na dłużej samochodu lądować z solarów akumulator przedni.

Chciałbym widzieć na panelu dodatkowe przełączniki od ładowarek i potem przekręcając kluczyk stacyjki automatycznie włączyć ładowanie.

W przyszłości mógłbym to rozwinąć - i np. jeśli mam powyżej 80% stanu energii w części kamperowej, i załączyło się ładowanie z silnika, to zacznij grzać wodę w boilerze.

Niestety było kilka problemów żeby dojść do takiej automatyzacji:  
- CerboGX ("mózg kampera") nie znal stanu silnika - czy pracuje czy jest wyłączony  
- CerboGX ma tylko 2 wbudowane przekaźniki do kontrolowania innych urządzeń i już są podłączone do przetwornicy i boilera  
- Mam płytkę z dodatkowymi 4rema przekaźnikami, ale jest niekompatybilna z pluginem do cerbo.


<div class="mt-4 mb-4 grid grid-cols-1 sm:grid-cols-2 gap-4">
<img src="/mastodon/720aa93d5cd5acad.png" alt="Screenshot z aplikacji nodered z automatyzacja uruchamiania przekaźnika w zależności od stanu  silnika." class="w-full max-h-96 object-cover cursor-zoom-in rounded-lg border border-gray-200 transition-colors hover:border-gray-300 dark:border-gray-700 dark:hover:border-gray-600 " loading="lazy" data-zoomable />
<img src="/mastodon/934aeff21d6ba1c7.png" alt="Panel kontrolny Victron cerbogx z sześcioma przełącznikami. Od lewej przetwornica, bojler, orion samochód, orion kamper." class="w-full max-h-96 object-cover cursor-zoom-in rounded-lg border border-gray-200 transition-colors hover:border-gray-300 dark:border-gray-700 dark:hover:border-gray-600 " loading="lazy" data-zoomable />
</div>

---

Najpierw wynalazłem w internecie schemat na którym z pomocą optoizolatora można podać sygnał w zależności od napięcia 12v w innym przewodzie.

Znalazłem odpowiedni bezpiecznik w samochodzie, który dostawał napięcie 12v po przekręceniu kluczyka stacyjki i puściłem od niego przewód od spodu samochodu aż po sam tył. Wykorzystałem otwory które już istniały idące do separatorów.

Podpiąłem izolator, podpiąłem cerbo - działa, skonfigurowałem input jako generator :D

Mam sygnał - na panelu pojawił się status silnika, co tez znaczy, ze mam do niego dostęp z poziomu NodeRed.

To było proste, teraz zacznie się prawdziwa zabawa z dodaniem przekaźników...


<div class="mt-4 mb-4 grid grid-cols-1 sm:grid-cols-2 gap-4">
<img src="/mastodon/697303f227f475c4.png" alt="Pseudo schemat obrazujący jak wykrywać uruchomienie silnika w cerboGX przez napięcie 12v z optoizolatorem." class="w-full max-h-96 object-cover cursor-zoom-in rounded-lg border border-gray-200 transition-colors hover:border-gray-300 dark:border-gray-700 dark:hover:border-gray-600 " loading="lazy" data-zoomable />
<img src="/mastodon/288c08ca17b87774.png" alt="Panel statusu z cerboGX pokazujacy uruchomiony silnik." class="w-full max-h-96 object-cover cursor-zoom-in rounded-lg border border-gray-200 transition-colors hover:border-gray-300 dark:border-gray-700 dark:hover:border-gray-600 " loading="lazy" data-zoomable />
</div>

---

Wynalazłem repozytorium, które dodaje wsparcie dodatkowych przekaźników do cerbo. [github.com/Lucifer06/RemoteGPIO](https://github.com/Lucifer06/RemoteGPIO)

W skrócie - będziemy sterować zewnętrznym urządzeniem poprzez konwerter rs485-usb za pomocą protokołu modbus w zależności od stanu przełącznika w cerboGX (tego z panelu) słuchając stanu na systemowym dbus.

Wszystko jest w bibliotece, tylko... Nie do mojej chińskiej płytki. Do mojej płytki nawet niema dobrej dokumentacji - wszystko co tam było nie działało.

Zaczynam od reverse engineeringu - wysyłam rożne wartości na rożne "discrete input" i "input register". Po kilku dniach mam działający zestaw komend który włącza i wyłącza każdy z czterech przekaźników.

Teraz ten plugin do cerbo. Caly byl napisany w bashu i bardzo nie kompatybilny z tym co moja płytka oferowała (trust me). Proste dodanie innej komendy nie wchodziło w grę i musiałem to przepisać pod siebie.

Znalazlem bibliotekę do Pythona od Victrona, która załatwia sporo rzeczy za mnie. Wystarczywszy otworzyć obiekt, który słucha na danych ścieżkach z dbus i wywołuje handler przy zmianie statusu. Potem juz tylko kilka godzin ślęczenia na pymodbus i ustabilizowanie zapytań i wuala.

Wszystko wgrane do Cerbo, serwis podmieniony - przełączam na telefonie stan przekaźnika i słyszę charakterystyczny klik!

Na koniec zostało podłączenie przewodów sygnałowych z dwóch przekaźników do separatorów "Orion", uruchomienie automatyzacji w NodeRed i wszystko działa!

Przekręcam stacyjkę i po minucie (dodałem lekki delay jakbym tylko chciał szyby opuścić) załącza się ładowanie.

Co ja teraz zrobię z tym zaoszczędzonym czasem.


<div class="mt-4 mb-4">
<img src="/mastodon/de22d71628dbf255.png" alt="Pytka z przekaźnikami." class="w-full cursor-zoom-in rounded-lg border border-gray-200 object-cover transition-colors hover:border-gray-300 dark:border-gray-700 dark:hover:border-gray-600" loading="lazy" data-zoomable />
</div>