Jak ukládat Arduino projekty do GitHub

Občas vytvořím nějaký kód. Jak postupně do kódu přidávám funkce, stává se mi, že kód přestane fungovat. Hledání chyby bývá obtížné a návrat k předchozí funkční verzi je většinou nemožný. Předcházet tomuto problému je ale poměrně jednoduché – začít používat software pro správu verzí. Tím je například nejznámější GIT. Dlouho jsem se tohoto software „bál“. Sice všichni píšou, jak je to snadné, ale v každém návodu je jenom kousek toho, co potřebujte (nebo si musíte přečíst knihu).

Článek je určen úplným nováčkům, kteří sice tuší, co GIT je, ale ještě neví, jak to vše postupně nastavit a propojit. Popisuji, jak spárovat složku v počítači se vzdáleným adresářem na GitHub. Vysvětluji variantu, kdy na projektu pracuji sám a nepotřebuji hlídat změny, které provedou jiní uživatelé.

Několik pojmů do začátku

Nejprve uvedu jedno grafické znázornění funkce jednotlivých git příkazů.

GIT Storage Data Flow
Znázornění toku dat při verzování pomocí GIT
  • GIT je systém pro správu verzí souborů, nejčastěji programových kódů. Slouží jako úložiště všech dřívějších verzí kódu. Umožňuje prohlížení a porovnávání rozdílů mezi jednotlivými verzemi kódu a v případě potřeby usnadní obnovení předchozích verzí. GIT může být nainstalován pouze lokálně (na vašem počítači) a nemusí mít připojený žádný vzdálený repozitář.
  • GitHub je webová služba, na které vývojáři sdílejí svoje open-source kódy. Umožňuje spolupráci více lidí na jednom projektu.
  • Commit je uložená verze kódu. Co commit, to verze. Lepší je vytvářet „hodně malých commitů“.

Při odesílání souborů na GitHub si dejte pozor na soubory, ve kterých máte uložená přístupová hesla. Nesdílejte citlivé údaje s ostatními.

Shrnutí postupu

  1. Nainstalování GIT
  2. Vytvoření přístupového SSH klíče
  3. Vložení SSH klíče do správce klíčů
  4. Přidání SSH klíče k účtu na GitHub
  5. Otestování SSH spojení
  6. Nastavení uživatele a e-mailové adresy pro commity
  7. Vytvoření repozitáře na GitHub
  8. Propojení GitHub repozitáře se složkou v PC
  9. Odeslání souborů na GitHub

Nainstalování GIT

Spusťte terminál, aktualizujte repozitáře balíků a nainstalujte poslední stabilní verzi

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git

Vytvoření přístupového SSH klíče

V terminálu pomocí příkazu ssh-keygen vygenerujeme přístupový klíč. Vložená e-mailová adresa slouží jako štítek nového klíče.

ssh-keygen -t rsa -b 4096 -C "tatageek.blog@gmail.com"

Po zobrazení výzvy „Enter a file in which to save the key“, stiskneme klávesu Enter. Tím je přijato výchozí umístění souboru. Dále zadáme přístupové heslo, opětovným zadáním ověříme jeho správnost.

V terminálu uvidíme něco takového:

uživatel@počítač:~$ ssh-keygen -t rsa -b 4096 -C "tatageek.blog@gmail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/uživatel/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/uživatel/.ssh/id_rsa.
Your public key has been saved in /home/užiavtel/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BlaBlaBla,BlaBlaBla,BlaBlaBla tatageek.blog@gmail.com

The key's randomart image is:
+---[RSA 4096]----+
|Bla Bla Bla      |
|Bla Bla Bla      |
| ...             |
+----[SHA256]-----+

Vložení SSH klíče do správce klíčů

V terminálu spustíme ssh-agent na pozadí a vložíme ssh klíč

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

V terminálu uvidíme něco takového:

uživatel@počítač:~$ eval "$(ssh-agent -s)"
Agent pid 5542
uživatel@počítač:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/uživatel/.ssh/id_rsa:
Identity added: /home/uživatel/.ssh/id_rsa
(tatageek.blog@gmail.com)

Přidání SSH klíče k účtu na GitHub

V terminálu nainstalujeme xclip, zkopírujeme obsah souboru s SSH klíčem a ten pak vložíme na stránkách GitHub.

V terminálu napíšeme následující příkazy nebo otevřeme skrytou složku .ssh, v textovém editoru otevřeme soubor id_rsa.pub a jeho obsah zkopírujeme. Při kopírování nepřidáváme žádné nové řádky nebo mezery.

sudo apt-get install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

Pokud nemáme účet na GitHub, nejprve ho vytvoříme.

V internetovém prohlížeči otevřeme adresu www.github.com/settings/keys nebo klikneme na náš avatar > Settings > SSH and GPG keys > New SSH key

Vložení nového SSH klíče do GitHub
Vložení nového SSH klíče do GitHub

V poli „Title“ pojmenujeme náš nový klíč. Pokud ke GitHub přistupujeme z více zařízení, poznáme podle popisku, ke kterému zařízení, který klíč patří. Do pole „Key“ vložíme zkopírovaný klíč.

Vložení nového SSH klíče do GitHub
Vložení nového SSH klíče do GitHub

Stiskneme tlačítko Add SSH key a zadání potvrdíme přihlašovacím heslem k našemu GitHub účtu.

Otestování SSH spojení

V terminálu napíšeme

ssh -T git@github.com

Upozornění, zda se opravdu chceme přihlásit potvrdíme v terminálu napsáním

yes

V terminálu uvidíme něco takového:

uživatel@počítač:~$ ssh -T git@github.com
The authenticity of host 'github.com (140.82.118.4)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,140.82.118.4' (RSA) to the list of known hosts.
Hi TataGEEK! You've successfully authenticated, but GitHub does not provide shell access.

Mně se vše povedlo bez problémů, ale prý jsou docela časté následující 2 chybové hlášení. Tak pokud se objeví, můžete použít tyto odkazy.

Nastavení uživatele a e-mailové adresy pro commity

Pomocí git config nastavíme uživatelské jméno a e-mailouvou adresu, která bude viditelná u všech našich commitů. Uživatelské jméno a e-mailovou adresu nahraďte vlastními parametry.

git config --global user.name "TataGEEK"
git config --global user.email tatageek.blog@gmail.com

Vytvoření repozitáře na GitHub

Přejdeme na stránku https://github.com/new a vytvoříme nový repozitář. Zadáme název repozitáře, stručný popis a klikneme na tlačítko Create repository.

Vytvoření nového repozitáře
Vytvoření nového repozitáře

Dokud je repozitář prázdný, GitHub nám ukazuje instrukce, co máme dělat.

Instrukce v prázdném repozitáři
Instrukce v prázdném repozitáři

Propojení GitHub repozitáře se složkou v PC

Nejprve v terminálu otevřeme složku s naším Arduino projektem, který chceme s GitHub propojit, následně v ní zadáme příkaz git init. Inicializace v otevřené složce vytvoří skrytou složku .git.

Vytvořená skrytá složka .git
cd /home/uživatel/cesta_ke_složce
git init

V terminálu uvidíme něco takového:

uživatel@počítač:~$ cd /home/uživatel/Arduino/RC-car/
uživatel@počítač:~/Arduino/RC-car$ git init
Initialized empty Git repository in /home/uživatel/Arduino/RC-car/.git/
uživatel@počítač:~/Arduino/RC-car$

Následně přidáme nový vzdálený repozitář. V příkazu zvolíme zkrácený název, přes který se na repozitář budeme odkazovat

git remote add rccar git@github.com:TataGEEK/BLE-RC-car-control.git

Odeslání souborů na GitHub

V terminálu otevřeme náš adresář s projektem.

uživatel@počítač:~$ cd /home/uživatel/Arduino/RC-car/

Vybereme soubory, které chceme commitnout = odeslat. Pokud chceme odeslat všechny soubory, v terminálu napíšeme git add mezera tečka.

git add .

V terminálu uvidíme něco takového:

uživatel@počítač:~/Arduino/RC-car$ git add .

Nyní už můžeme commitnout soubory. Napíšeme příkaz git commit včetně zprávy o tom, co jsme změnili. Jsou 2 možnosti, jak to udělat. Pokud píšeme krátkou zprávu, použijeme parametr -m“text zprávy“

git commit -m "Stručně popíšeme, co jsme změnili"

Pokud chceme napsat delší, víceřádkový text, napíšeme pouze git commit a text napíšeme v textovém editoru. Takto máme zaznamenanou verzi, ke které se můžeme později vrátit.

V terminálu uvidíme něco takového:

uživatel@počítač:~/Arduino/RC-car$ git commit
[master (root-commit) 1a4d2f6] prvni vytvoreni repozitare
7 files changed, 1858 insertions(+)
create mode 100644 BLE-client/BLE-client.ino
create mode 100644 BLE-server/BLE-server.ino
create mode 100644 BLE-server/MPU9250.cpp
create mode 100644 BLE-server/MPU9250.h
create mode 100644 BLE-server/quaternionFilters.cpp
create mode 100644 BLE-server/quaternionFilters.h
create mode 100644 BLE-server/sensor.h

7 tipů pro psaní dobrých commit zpráv:

Celý anglický text naleznete na tomto odkazu.

  1. Oddělte předmět od těla prázdným řádkem
  2. Omezte délku předmětu na 50 znaků
  3. Řádek předmětu začněte velkým písmenem
  4. Neukončujte předmět tečkou
  5. V řádku předmětu použijte rozkazovací způsob
  6. Řádky těla zprávy ukončujte po 72 znacích
  7. V těle zprávy vysvětlete, co a proč se změnilo (nepište, jak se to změnilo)

Pokud je náš projekt ve stavu, kdy ho chceme sdílet s ostatními, použijeme příkaz git push.

git push -u rccar master

V terminálu uvidíme něco takového:

uživatel@počítač:~/Arduino/RC-car$ git push -u rccar master
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 4 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (11/11), 21.09 KiB | 4.22 MiB/s, done.
Total 11 (delta 0), reused 0 (delta 0)
To github.com:TataGEEK/BLE-RC-car-control.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'rccar'.

Odkazy

Filtr krátkých geocaching logů

Pokud hrajete geocaching a založili jste několik kešek, pravděpodobně jste již někdy dostali log, který vás tak úplně nezajímal. Myslím tím krátké vzkazy jako: „TFTC“, „Díky za cache“, „Díky“, případně jen smajlík. Když nějakou dobu logy nečtete, máte najednou plnou schránku a stojíte před rozhodnutím, jestli logy číst, mazat nebo nějak roztřídit. Vytvořil jsem krátký script, který logům kratším než 40 znaků přiřadil štítek. Mohl jsem tak roztřídit co číst a co vyhodit. Pokud používáte Gmail, můžete automatický filtr také vyzkoušet.

Skript nerozlišuje odesilatele, protože mám speciální gmail adresu jen pro geocaching. Pokud vám do gmailu chodí i další zprávy, může se stát, že budou označeny tímto štítkem

Postup

  1. Spusťte Google Disk a vytvořte nový soubor Google Apps Script. Soubor jsem si pojmenoval „gmail filtr“.
Pokračování textu Filtr krátkých geocaching logů

Jak číst data z webu a uložit je do Home Assistant

Do Home Assistant můžeme jako senzor připojit i obsah webové stránky. Můžeme na ní analyzovat html kód a získat tak jen konkrétní část obsahu. Home Assistant díky tomu získá jen údaj, se kterým může dále pracovat a uložit ho. Slouží k tomu integrace scrape. Získání dat z webových stránek jsem zkoušel těmito 2 způsoby.

Podle pořadí HTML prvku

První možností, jak požadovaná data získat, je podle pořadí HTML prvku. Jako příklad si vezmeme stránku ČHMI, který dává veřejně k dispozici informace o hladině spodních vod nebo výšce hladiny a průtoku některých potoků a řek.

Pokračování textu Jak číst data z webu a uložit je do Home Assistant

Co je Home Assistant

Home Assistant je software pro vytvoření a ovládání chytré domácnosti. Vyhledá ve vaší síti chytrá zařízení a umožní jim spolu vzájemně komunikovat. Všechna zařízení tak lze sledovat nebo ovládat z jednoho místa – z internetového prohlížeče nebo aplikace v mobilním telefonu. Uživatelské rozhraní funguje na systému dlaždic, na kterých si zobrazíte jen ty informace, které vás zajímají. Můžete také vytvářet různé automatizace na základě stavu zařízení nebo podle sledovaných veličin.

Prostředí Home Assistant zkusím vysvětlit z pohledu nováčka, který s tímto software v minulosti několikrát začal, ale vždycky (kvůli nepochopení) skončil. Ani ne před měsícem to ale všechno do sebe začalo zapadat. Jsem tedy jen o malý krůček před nováčky, ale snad dost zkušený na sepsání informací pro úplné začátečníky.

Pokračování textu Co je Home Assistant

Jak nahrát vlastní software Tasmota do chytré zásuvky WETO W-T05

How to flash WETO W-T05 with Tasmota

Každý výrobce chytrých zásuvek, má vytvořený vlastní software pro jejich ovládání. Pokud máte doma několik chytrých zásuvek od různých výrobců, pravděpodobně k nim musíte mít v telefonu nainstalováno několik různých aplikací na jejich ovládání. Levné zásuvky mnohdy ani nelze připojit k vlastnímu serveru domácí automatizace (Domoticz.com, Hass.io). Naštěstí existuje snadný způsob, jak v zásuvkách sjednotit používaný software. Díky přepsání původního firmware v chytré zásuvce, firmwarem Tasmota (v budoucnu se chystám vyzkoušet ještě i esphome.io) získáte komunikace přes MQTT, přehledné webové rozhraní pro nastavení zásuvky a také integraci zásuvky do serveru domácí automatizace. V tomto návodu popisuji postup, jak nahrát vlastní software Tasmota do chytré zásuvky WETO W-T05, neboli jak flashnout WETO W-T05.

Upozornění, rozebráním a nahráním vlastního firmware velmi pravděpodobně přicházíte o záruku.

Co je uvnitř WETO W-T05

Nejprve se podíváme, jak chytrá zásuvka vypadá, jak ji rozebrat a co obsahuje.

Chytrá zásuvka WETO W-T05
Pro rozebrání povolte 3 šroubky s křížovou hlavou
Chytrá zásuvka WETO W-T05
Demontovaný přední kryt chytré zásuvky
Chytrá zásuvka WETO W-T05
DPS chytré zásuvky WETO W-T05
ESP8285
Deska má osazen ESP8285

Pokračování textu Jak nahrát vlastní software Tasmota do chytré zásuvky WETO W-T05

Jak automatizovat propojení Excel a SAP

Když mě teď potkal fenomén zvaný práce z domova, rozhodl jsem se věnovat trochu času zjednodušování denní rutiny. Řekl jsem si, že si zautomatizuji veškeré nudné a opakující se činnosti v SAPu. První činnost, kterou jsem potřeboval automatizovat, bylo neustálé přepínání a kopírování dat mezi Excelem a SAPem.

Pro případné začátečníky v Excelu uvádím, že karta vývojář není ve výchozím nastavení vidět a musíte si jí zapnout. Stejně tak Microsoft Visual Basic for Applications spustíte stisknutím alt+F11.

VBA Skript pro ovládání SAP

Jdeme na to. Otevřeme Excel, VBA editor a kopírujeme. První část kódu naleznete kdekoliv na netu. Tímto kódem se Excel připojí k již přihlášenému SAPu. Automatické přihlášení je také možné, ale já ho nevyužiji, tak jsem se tím ani nezabýval.

Sub SAP_MM03()

Set SapGuiAuto = GetObject("SAPGUI")        'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine  'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0)             'Get the first system that is currently connected
Set session = SAPCon.Children(0)            'Get the first session (window) on that connection
session.findById("wnd[0]").Maximize
SAP GUI Scripting
SAP GUI Scripting

Pomocí tohoto kódu, se Excel připojí k SAPu. To, že se Excel k SAPu připojil poznáte podle ikonky s běhajícím červeným šikmým proužkem, vpravo dole ve stavové liště okna SAPu.

Pokračování textu Jak automatizovat propojení Excel a SAP

Návod na výrobu pastelkovníku

Před více než rokem, manželka vyrobila pastelkovník, z ruliček od toaletního papíru. Fungoval skvěle, dokud nedostal zásah rozlitou vodou z vodovek. Namísto opravy jsem se rozhodl vytvořit nový, pevný, jednoduše čistitelný pastelkovník z překližky. Výroba byla snadná, ale bylo potřeba použít speciální vybavení. Chcete také takový pastelkovník? Přečtěte si můj návod na výrobu pastelkovníku.

Pastelkovník z ruliček od toaletního papíru a nový dřevěný pastelkovník
Starý papírový a nový dřevěný pastelkovník

Přehled

ikona obtížnost Obtížnost:

Jedná se o poměrně jednoduchou konstrukci, na které by vás nemělo nic překvapit.

ikona nástroje Vybavení:

Budete potřebovat trochu lépe vybavenou kutilskou dílnu se zaměřením na zpracování dřeva.

ikona čas Čas:

Projekt berte jako víkendový, s dětmi zabere ještě o něco více času.

ikona peníze Peníze:

Náklady na materiál jsou do 100,- Kč.

Pokračování textu Návod na výrobu pastelkovníku

Automatická záloha počítače s Linux Ubuntu do Synology NAS

Na každém rohu se opakuje: „zálohujte, zálohujte, zálohujte“. Ale návodů, pochopitelných i pro běžné uživatele, jsem moc nenašel. Když jsem se navíc rozhodl celý proces zálohy automatizovat, byl jsem úplně v koncích. Trvalo mi 6 večerů, než proběhla první automatická záloha počítače do Synology. Nyní jsem sepsal návod, podle kterého v případě potřeby zvládnu automatické zálohování znovu nastavit.

V článku jsou vysvětleny 2 možnosti připojení (CIFS nebo NFS) a 2 zálohovací nástroje. S Déjà Dup jsem začínal a Back in Time jsem rozhodl používat.

Záloha počítače do Synology

Nic člověka nepovzbudí k zálohování víc, než to, že přijde o data. Mě se to stalo navíc ve chvíli, když jsem čistil 1TB USB disk. Dříve jsem ho používal pro zálohování a teď jsem ho chtěl připojit ke Smart TV. Některá data už v Synology byla, ale spousta jich čekalo na přetřídění, seskupení a vložení do Synology.

Pokračování textu Automatická záloha počítače s Linux Ubuntu do Synology NAS

Synology zpomaluje internet

Podle internetových diskuzí jsem nebyl sám, komu Synology zpomaluje internet. Jedná se o problém, se kterým se setkalo mnoho uživatelů, ale jejich řešení je téměř nemožné najít. Pojďte se podívat, co všechno jsem zkusil a co nakonec „nejspíš“ pomohlo.

Už dlouho jsem chtěl koupit nějaké zařízení na zálohování fotek. Nakonec volba padla na Synology DS218. Zpětně vidím, že jsem měl koupit nějakou lepší verzi, která podporuje Docker, takže to neberte jako doporučení ke koupi. Když jsem Synology NAS připojil, začal zpomalovat připojení k internetu.

Popis výchozí situace:

Moje připojení k internetu se s vypnutým Synology DS218 běžně pohybuje okolo 80Mb/s.

Speed test s vypnutým Synology
Pokračování textu Synology zpomaluje internet

Jak ztlumit dětskou elektronickou hračku

Také vám přijde, že jsou dětské elektronické hračky moc hlučné? Chtěli byste je ztišit, ale nevíte jak na to? V podstavě jsou 2 způsoby. První možností, jak ztlumit dětskou elektronickou hračku, je mechanické „zacpání“ reproduktoru. Variantou druhou je jednoduchý zásah do elektroniky hračky.

Jak mechanicky ztlumit dětskou hračku?

Mechanické ztlumení je to nejsnadnější, co můžeme udělat. Manželka tomu doma říká „na holčičí způsob“. Jednoduše vezmeme průhlednou lepenku a reproduktor přelepíme. Někdy se stane, že je hračka stále stejně hlasitá a ještě k tomu vydává zvuk chrčící lepenky. To pak nalepíme další a další vrstvu. Občas to ale nefunguje. Zvlášť, když je kryt reproduktoru tvarovaný a lepenka se odlepuje. To přichází na řadu další „holčičí technologie“, jakou je nacpání vaty do mřížky reproduktoru. Vata celkem spolehlivě tlumí zvuk. Nejtěžším „holčičím kalibrem“ je zalepení mřížky reproduktoru pomocí tavné pistole. Sice to není estetické, ale docela to funguje.

Reproduktor dětského pianka, zalepený tavnou pistolí

Ono to teď vypadá, že si z mechanického tlumení dělám srandu, ale je dobré ho použít, pokud je hračka slepená (nerozebíratelná). Tam většinou pokus o rozebrání nadělá více škody. Pokud lze hračku snadno rozebrat – rozšroubovat, myslím si, že je lepší elektronické ztlumení.

Pokračování textu Jak ztlumit dětskou elektronickou hračku