sexta-feira, 6 de agosto de 2021

U-BLOX NINA W106 SENDO ACESSADO VIA openHAB - ANNEX BASIC - SMARTHOME

 U-BLOX NINA W106 SENDO ACESSADO VIA openHAB - ANNEX BASIC - SMARTHOME

MQTT SERVER

O objetivo deste BLOG é demonstrar como é possível utilizar o ARDUINO para programar o módulo U-BLOX NINA W106 e atualizar um servidor MQTT instalado via openHAB e controlar um LED.

u-BLOX NINA W106

Wi-Fi 802.11b/g/n
Dual-Mode Bluetooth v4.2
Poderoso suporte de CPU aberta para aplicativos personalizados
Tamanho pequeno e várias opções de antena
Pino compatível com outros módulos NINA
Certificação global
Módulo baseado no ESP32, com 4MB FLASH

SOBRE A LINGUAGEM BASIC

BASIC (acrônimo para Beginner's All-purpose Symbolic Instruction Code; em português: Código de Instruções Simbólicas de Uso Geral para Principiantes) é uma linguagem de programação, criada com fins didáticos, pelos professores John George Kemeny, Thomas Eugene Kurtz e Mary Kenneth Keller em 1964 no Dartmouth College.

Basic pode ser uma opção de linguagem para se aprender lógica, uma vez que foi desenvolvida em alto nível (próxima da linguagem humana). Além da sua relativa facilidade de criar aplicações de forma simples e rápida.

BASIC também é o nome genérico dado a uma grande família de linguagens de programação derivadas do BASIC original. Provavelmente existem mais variações de BASIC do que de qualquer outra linguagem de programação.

BASIC ANNEX RDS

ESP-NOW, BLE, MQTT...ÓTIMO PARA IoT

Veja o HELP  do BASIC ANNEX RDS

Veja também FAQ


MQTT

Para os dispositivos de Internet das Coisas (IoT), a conexão com a Internet é um requisito. A conexão com a Internet permite que os dispositivos trabalhem entre si e com serviços de backend. O protocolo de rede subjacente da Internet é o TCP/IP. Desenvolvido com base na pilha TCP/IP, o MQTT (Message Queue Telemetry Transport) tornou-se o padrão para comunicações de IoT.



 É um protocolo de mensagens de publicação/assinatura, extremamente simples e leve, projetado para dispositivos restritos e redes de baixa largura de banda, alta latência ou não confiáveis. Os princípios de design são minimizar a largura de banda da rede e os requisitos de recursos do dispositivo, ao mesmo tempo em que tentam garantir a confiabilidade e algum grau de garantia de entrega. Esses princípios também acabam por tornar o protocolo ideal do emergente mundo "máquina para máquina" (M2M) ou "Internet das Coisas" de dispositivos conectados.

ANNEX implementa o protocolo com as seguintes limitações:
- Ele só pode publicar mensagens QoS 0.
- Pode se inscrever em QoS 0 ou QoS 1.
- O tamanho máximo da mensagem é de 256 caracteres
- O intervalo de manutenção é definido para 15 segundos
- O cliente usa MQTT 3.1.1

Mosquitto

Mosquitto é um BROKER de código aberto (licenciado EPL/EDL) que implementa as versões 5.0, 3.1.1 e 3.1 do protocolo MQTT. Mosquitto é leve e é adequado para uso em todos os dispositivos, desde computadores de placa única de baixa potência até servidores completos.

INTERPRETADOR ?

O interpretador básico funciona através da leitura de um arquivo de script salvo no sistema de arquivamento em disco local esp.

Este é o modo padrão se nenhum SDcard externo estiver conectado ao u-BLOX NINA W106.

Além disso, o Annex32 pode usar um SDcard externo como sistema de arquivos, permitindo até 16 Gbytes de espaço em disco.

Durante a inicialização, se um SDcard externo for detectado, ele será conectado automaticamente e usado como o sistema de arquivos padrão, caso em que o sistema de arquivo interno não será usado.

Como o u-BLOX NINA W106 contém uma boa quantidade de RAM, o script do usuário é copiado do disco para uma área dedicada na memória RAM onde é executado, junto com a lista das linhas do programa, os rótulos dos ramos e a lista do usuário definido sub-rotinas ..

Isso usa mais RAM em comparação com outras abordagens, mas permite uma execução mais rápida do programa.

Outra consideração de desempenho é que o u-BLOX NINA W106 deve ser capaz de executar várias atividades em segundo plano (servidor web, servidor de arquivos, etc.), portanto, precisa de memória livre suficiente para executar tais tarefas, e essas tarefas paralelas obviamente terão um impacto no desempenho do script ..

Portanto, em termos de desempenho, o interpretador não é particularmente rápido, mas deve ser rápido o suficiente para a maioria das tarefas que você pode exigir. 

Comandos/Eventos MQTT do BASIC Annex RDS

FUNCTIONS / COMMANDS

DESCRIPTION

Ret = MQTT.Setup(server$, [debug])

Setup the MQTT communications.

Server$ is the MQTT server url

‘debug’, if set to 1, enable some useful debug messages

This function clears all the existing certificates and PSK

Returns 258 at the first initialisation and then 0

Ret = MQTT.Certif(cert_pem$ [,client_cert_pem$] [,client_key_pem$])

Set the SSL certificates.

‘cert_pem$’ is used for the main server authorisation

‘client_cert_pem’ and ‘client_key_pem$’ are used for a more complex authorisation scheme (for advanced users)

When setting the certificates, the PSK will be removed

Ret = MQTT.PSK(psk_hint_key$)

Set the PSK as an alternative to certificate verification.

When setting this PSK all the certificates will be removed

Ret = MQTT.Connect(login$, pass$ [id$])

Connect to the server using the provided login and password.

Optionally id$ permit to define an arbitrary ID

Returns 0 if OK

Ret = MQTT.Connect("", "", [id$])

Connect to the server without identification

Optionally id$ permit to define an arbitrary ID

Returns 0 if OK

Ret = MQTT.Disconnect[()]

Disconnects from the MQTT server

Returns 0 if OK

Ret = MQTT.Publish(topic$, message$ [Qos], [retain])

Publish a string message in the specified topic

Qos can be 0, 1 or 2; if not defined defaults to 0

‘retain’, if set to 1, the message is retained

Returns the msg_id of the message sent

Ret = MQTT.Subscribe(topic$ [,Qos])

Subscribes to messages published to the specified topic.

Qos can be 0, 1 or 2; if not defined defaults to 0

Returns 0 if OK

Ret = MQTT.UnSubscribe(topic$)

Unsubscribes from the specified topic

Returns 0 if OK

Ret= MQTT.Connected[()]

Returns the current connection status.

Returns 1 if connected or 0 if disconnected

Ret = MQTT.Status[()]

Returns the current status. It can be:

    MQTT_STATE_INIT = 0

    MQTT_STATE_DISCONNECTED = 1

    MQTT_STATE_CONNECTED = 2

    MQTT_STATE_WAIT_RECONNECT = 3

OnMQTT label

Define a label where the program will jump when an MQTT message is received

Ret$ = MQTT.Message$

Returns the MQTT message received

Ret$ = MQTT.Topic$

Returns the MQTT topic received or the event name.

The event can be:

 

Value

Event

_BEFORE_CONNECT_

Raised before the connection is done. Useful to determine if the module is trying to (re)connect

_CONNECTED_

Raised when the connection is done

_DISCONNECTED_

Raised when the connection is lost

_ERROR_

Raised in case of error

 Assina: Subscribe  Publica: Publish

Obtendo MAC ADDRESS

Print MAC$

Exemplo

O exemplo abaixo:
  • Define o servidor e porta do Servidor MQTT do openHAB
  • Transfere as credenciais
  • Se inscreve em um tópico para aguardar o estado de um LED
  • Sinaliza no LED

'LED CONTROL 'openHAB PIN.MODE 2, OUTPUT PIN(2) = 0 print mqtt.setup("mqtt://192.168.100.79", 1883) 'openHAB mosquitto MQTT print mqtt.connect("openhabian", "openhabian") print mqtt.subscribe("esp32-sniffer/a4cf127531c8/ble") ' subscribe to the LED topic onmqtt mqtt_msg wait ' receive messages from the server mqtt_msg: print "TOPIC : "; mqtt.topic$ print "MESSAGE: "; mqtt.message$
' Command to LED Off and On if (mqtt.message$ = "0") then PIN(2) = 0 endif if (mqtt.message$ = "1") then PIN(2) = 1 endif return
   OPENHAB

O Open Home Automation Bus (openHAB, pronunciado יənənhæb) é uma plataforma de automação residencial agnóstica de código aberto que funciona como o centro de sua casa inteligente!

Alguns dos pontos fortes da OpenHAB são:

Sua capacidade de integrar uma infinidade de outros dispositivos e sistemas. openHAB inclui outros sistemas de automação residencial, dispositivos (inteligentes) e outras tecnologias em uma única solução

Para fornecer uma interface de usuário uniforme e uma abordagem comum às regras de automação em todo o sistema, independentemente do número de fabricantes envolvidos.

Dando-lhe a ferramenta mais flexível disponível para tornar realidade quase qualquer desejo de automação residencial; se você pode pensar isso, as chances são de que você pode implementá-lo com openHAB.

O openHAB se comunica eletronicamente com dispositivos inteligentes e não tão inteligentes, executa ações definidas pelo usuário e fornece páginas da Web com informações definidas pelo usuário, bem como ferramentas definidas pelo usuário para interagir com todos os dispositivos. Para isso, os segmentos openHAB e compartimentaliza certas funções e operações.

O openHAB é executado nas plataformas mais populares, como Linux, Windows e MacOS e em quase qualquer hardware que vá do Raspberry Pis a computadores desktop e PCs de servidores. Você pode encontrar instruções de instalação específicas para essas e outras plataformas no artigo Visão geral de instalação. Se você tem uma forte preferência por uma determinada plataforma, então essa plataforma é provavelmente a sua melhor escolha.

Você pode instalar openHAB em seu computador de mesa para fins de avaliação se você já tiver algum desses sistemas disponíveis para uso, mas recomendamos usar um sistema dedicado a longo prazo. Se você se sente sério sobre automação residencial é melhor começar com um sistema dedicado imediatamente.

Instalando OPENHAB


Melhor vídeo

Seminário

Download openHAB | openHAB

Imagem do cartão SD pré-embalado raspberry Pi

Flash, plug, wait, enjoy: A imagem fornecida é baseada no sistema padrão Raspberry Pi OS Lite (anteriormente chamado raspbian). openHABian é projetado como um sistema sem cabeça, você não precisará de um display ou um teclado. 

Na primeira inicialização, o sistema configurará openHAB, suas ferramentas e configurações. Os pacotes serão baixados em sua versão mais recente e configurados. Todo o processo levará alguns minutos, depois o OpenHAB e todas as outras ferramentas necessárias para começar estarão prontas para uso sem mais etapas de configuração.

Roteiro
  • Baixe o mais recente arquivo de imagem do cartão SD "openHABian" (abre nova janela)(Nota: o arquivo é compactado xz). 
  • Escreva a imagem em seu cartão SD (por exemplo, com Etcher (abre nova janela)ou oficial Raspberry Pi Imager (abre nova janela), ambos capazes de trabalhar diretamente com arquivos xz
  • Insira o cartão SD no raspberry Pi, conecte seu cabo Ethernet - Wi-Fi também é suportado - e ligue
  • Aguarde aproximadamente 15-45 minutos para que o openHABian faça sua mágica, você pode assistir ao progresso da instalação dentro do seu navegador. No Raspberry PI ZERO W aguarde umas (4) quatro horas.
  • O sistema será acessível pelo seu IP ou através do nome DNS local openhabian (ou o que você alterou 'hostname' em openhabian.conf para conectar-se à interface do usuário aberto em http://openhabian:8080 (abre nova janela)
  • Conecte-se às ações da rede Samba(abre nova janela)
  • Conecte-se ao visualizador de log aberto (frontail): http://openhabian:9001(abre nova janela)

openhabian@openhabian:~$ sudo reboot [sudo] password for openhabian: openhabian@openhabian:~$ [ 1392.509209] reboot: Restarting system [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.10.17+ (dom@buildbot) (arm-linux-gnueabihf-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1403 Mon Feb 22 11:26:13 GMT 2021 [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache [ 0.000000] OF: fdt: Machine model: Raspberry Pi Zero W Rev 1.1 [ 0.000000] Memory policy: Data cache writeback [ 0.000000] Reserved memory: created CMA memory pool at 0x1ac00000, size 64 MiB [ 0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x000000001effffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x000000001effffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000001effffff] [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 125860 [ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbdepth=16 bcm2708_fb.fbswap=1 smsc95xx.macaddr=B8:27:EB:76:19:88 vc_mem.mem_base=0x1fa00000 vc_mem.mem_size=0x20000000 console=ttyS0,115200 console=tty1 root=PARTUUID=da82b514-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait [ 0.000000] Kernel parameter elevator= does not have any effect anymore. [ 0.000000] Please use sysfs to set IO scheduler for individual devices. [ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 423176K/507904K available (8638K kernel code, 1324K rwdata, 2816K rodata, 420K init, 837K bss, 19192K reserved, 65536K cma-reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] ftrace: allocating 30576 entries in 60 pages [ 0.000000] ftrace: allocated 60 pages with 4 groups [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] random: get_random_bytes called from start_kernel+0x324/0x564 with crng_init=0 [ 0.000024] sched_clock: 32 bits at 1000kHz, resolution 1000ns, wraps every 2147483647500ns [ 0.000095] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns [ 0.000179] bcm2835: system timer (irq = 27) [ 0.000826] Console: colour dummy device 80x30 [ 0.001492] printk: console [tty1] enabled [ 0.001588] Calibrating delay loop... 697.95 BogoMIPS (lpj=3489792) [ 0.060335] pid_max: default: 32768 minimum: 301 [ 0.060628] LSM: Security Framework initializing [ 0.060950] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.061018] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.063159] Disabling memory control group subsystem [ 0.063457] CPU: Testing write buffer coherency: ok [ 0.065243] Setting up static identity map for 0x8200 - 0x8238 [ 0.066512] devtmpfs: initialized [ 0.079013] VFP support v0.3: implementor 41 architecture 1 part 20 variant b rev 5 [ 0.079420] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.079501] futex hash table entries: 256 (order: -1, 3072 bytes, linear) [ 0.087370] pinctrl core: initialized pinctrl subsystem [ 0.089216] NET: Registered protocol family 16 [ 0.093907] DMA: preallocated 1024 KiB pool for atomic coherent allocations [ 0.100183] audit: initializing netlink subsys (disabled) [ 0.101753] thermal_sys: Registered thermal governor 'step_wise' [ 0.102750] hw-breakpoint: found 6 breakpoint and 1 watchpoint registers. [ 0.102840] hw-breakpoint: maximum watchpoint size is 4 bytes. [ 0.103100] Serial: AMBA PL011 UART driver [ 0.110665] audit: type=2000 audit(0.100:1): state=initialized audit_enabled=0 res=1 [ 0.126186] bcm2835-mbox 2000b880.mailbox: mailbox enabled [ 0.140743] raspberrypi-firmware soc:firmware: Attached to firmware from 2021-02-25T12:12:27, variant start_cd [ 0.150761] raspberrypi-firmware soc:firmware: Firmware hash is 564e5f9b852b23a330b1764bcf0b2d022a20afd0 [ 0.209713] bcm2835-dma 20007000.dma: DMA legacy API manager, dmachans=0x1 [ 0.212842] SCSI subsystem initialized [ 0.213340] usbcore: registered new interface driver usbfs [ 0.213487] usbcore: registered new interface driver hub [ 0.213620] usbcore: registered new device driver usb [ 0.216365] clocksource: Switched to clocksource timer [ 2.214202] VFS: Disk quotas dquot_6.6.0 [ 2.214384] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 2.214673] FS-Cache: Loaded [ 2.215066] CacheFiles: Loaded [ 2.233084] NET: Registered protocol family 2 [ 2.234423] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) [ 2.234572] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear) [ 2.234687] TCP bind hash table entries: 4096 (order: 2, 16384 bytes, linear) [ 2.234789] TCP: Hash tables configured (established 4096 bind 4096) [ 2.234992] UDP hash table entries: 256 (order: 0, 4096 bytes, linear) [ 2.235068] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear) [ 2.235532] NET: Registered protocol family 1 [ 2.236869] RPC: Registered named UNIX socket transport module. [ 2.236941] RPC: Registered udp transport module. [ 2.236978] RPC: Registered tcp transport module. [ 2.237010] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 2.238505] hw perfevents: no irqs for PMU, sampling events not supported [ 2.238627] hw perfevents: enabled with armv6_1176 PMU driver, 3 counters available [ 2.243088] Initialise system trusted keyrings [ 2.243792] workingset: timestamp_bits=14 max_order=17 bucket_order=3 [ 2.255839] zbud: loaded [ 2.258995] FS-Cache: Netfs 'nfs' registered for caching [ 2.260419] NFS: Registering the id_resolver key type [ 2.260529] Key type id_resolver registered [ 2.260570] Key type id_legacy registered [ 2.260836] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 2.262745] Key type asymmetric registered [ 2.262819] Asymmetric key parser 'x509' registered [ 2.262938] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) [ 2.262989] io scheduler mq-deadline registered [ 2.263027] io scheduler kyber registered [ 2.266216] bcm2708_fb soc:fb: FB found 1 display(s) [ 2.274335] Console: switching to colour frame buffer device 82x26 [ 2.278781] bcm2708_fb soc:fb: Registered framebuffer for display 0, size 656x416 [ 2.283705] random: fast init done [ 2.288831] Serial: 8250/16550 driver, 1 ports, IRQ sharing enabled [ 2.291797] bcm2835-aux-uart 20215040.serial: there is not valid maps for state default [ 2.297776] bcm2835-rng 20104000.rng: hwrng registered [ 2.300054] vc-mem: phys_addr:0x00000000 mem_base=0x1fa00000 mem_size:0x20000000(512 MiB) [ 2.304843] gpiomem-bcm2835 20200000.gpiomem: Initialised: Registers at 0x20200000 [ 2.329401] brd: module loaded [ 2.345976] loop: module loaded [ 2.350097] Loading iSCSI transport class v2.0-870. [ 2.354274] libphy: Fixed MDIO Bus: probed [ 2.356676] usbcore: registered new interface driver smsc95xx [ 2.358414] dwc_otg: version 3.00a 10-AUG-2012 (platform bus) [ 3.088296] Core Release: 2.80a [ 3.090060] Setting default values for core params [ 3.091765] Finished setting default values for core params [ 3.293763] Using Buffer DMA mode [ 3.295467] Periodic Transfer Interrupt Enhancement - disabled [ 3.297156] Multiprocessor Interrupt Enhancement - disabled [ 3.298827] OTG VER PARAM: 0, OTG VER FLAG: 0 [ 3.300578] Dedicated Tx FIFOs mode [ 3.302991] [ 3.303030] WARN::dwc_otg_hcd_init:1074: FIQ DMA bounce buffers: virt = dad14000 dma = 0x9ad14000 len=9024 [ 3.307737] FIQ FSM acceleration enabled for : [ 3.307737] Non-periodic Split Transactions [ 3.307737] Periodic Split Transactions [ 3.307737] High-Speed Isochronous Endpoints [ 3.307737] Interrupt/Control Split Transaction hack enabled [ 3.315044] [ 3.315064] WARN::hcd_init_fiq:457: FIQ on core 0 [ 3.317919] [ 3.317935] WARN::hcd_init_fiq:458: FIQ ASM at c0652330 length 36 [ 3.320742] [ 3.320759] WARN::hcd_init_fiq:497: MPHI regs_base at df810000 [ 3.323712] dwc_otg 20980000.usb: DWC OTG Controller [ 3.325320] dwc_otg 20980000.usb: new USB bus registered, assigned bus number 1 [ 3.326948] dwc_otg 20980000.usb: irq 56, io mem 0x00000000 [ 3.328476] Init: Port Power? op_state=1 [ 3.329917] Init: Power Port (0) [ 3.331852] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10 [ 3.334790] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 3.336405] usb usb1: Product: DWC OTG Controller [ 3.337929] usb usb1: Manufacturer: Linux 5.10.17+ dwc_otg_hcd [ 3.339445] usb usb1: SerialNumber: 20980000.usb [ 3.342130] hub 1-0:1.0: USB hub found [ 3.343820] hub 1-0:1.0: 1 port detected [ 3.347722] usbcore: registered new interface driver usb-storage [ 3.349816] mousedev: PS/2 mouse device common for all mice [ 3.352998] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer [ 3.357945] sdhci: Secure Digital Host Controller Interface driver [ 3.359632] sdhci: Copyright(c) Pierre Ossman [ 3.362048] mmc-bcm2835 20300000.mmcnr: could not get clk, deferring probe [ 3.364730] sdhost-bcm2835 20202000.mmc: could not get clk, deferring probe [ 3.366972] sdhci-pltfm: SDHCI platform and OF driver helper [ 3.369399] ledtrig-cpu: registered to indicate activity on CPUs [ 3.371596] hid: raw HID events driver (C) Jiri Kosina [ 3.373512] usbcore: registered new interface driver usbhid [ 3.375169] usbhid: USB HID core driver [ 3.383618] Initializing XFRM netlink socket [ 3.385351] NET: Registered protocol family 17 [ 3.387135] Key type dns_resolver registered [ 3.389572] registered taskstats version 1 [ 3.391098] Loading compiled-in X.509 certificates [ 3.408464] uart-pl011 20201000.serial: cts_event_workaround enabled [ 3.410217] 20201000.serial: ttyAMA0 at MMIO 0x20201000 (irq = 81, base_baud = 0) is a PL011 rev2 [ 3.416563] bcm2835-aux-uart 20215040.serial: there is not valid maps for state default [ 3.420797] printk: console [ttyS0] disabled [ 3.422681] 20215040.serial: ttyS0 at MMIO 0x20215040 (irq = 53, base_baud = 50000000) is a 16550 [ 4.403921] printk: console [ttyS0] enabled [ 4.411488] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver [ 4.423095] mmc-bcm2835 20300000.mmcnr: mmc_debug:0 mmc_debug2:0 [ 4.431050] mmc-bcm2835 20300000.mmcnr: DMA channel allocated [ 4.466284] sdhost: log_buf @ (ptrval) (9ad13000) [ 4.511706] mmc1: queuing unknown CIS tuple 0x80 (2 bytes) [ 4.520821] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 4.528142] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1) [ 4.539272] of_cfs_init [ 4.543678] of_cfs_init: OK [ 4.569604] mmc1: queuing unknown CIS tuple 0x80 (3 bytes) [ 4.577856] Waiting for root device PARTUUID=da82b514-02... [ 4.588156] mmc1: queuing unknown CIS tuple 0x80 (7 bytes) [ 4.656619] mmc0: host does not support reading read-only switch, assuming write-enable [ 4.671861] mmc0: new high speed SDHC card at address aaaa [ 4.680759] mmcblk0: mmc0:aaaa SU08G 7.40 GiB [ 4.690581] mmcblk0: p1 p2 [ 4.735462] mmc1: new high speed SDIO card at address 0001 [ 4.746308] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 4.757830] VFS: Mounted root (ext4 filesystem) readonly on device 179:2. [ 4.775228] devtmpfs: mounted [ 4.786677] Freeing unused kernel memory: 420K [ 4.792808] Kernel memory protection not selected by kernel config. [ 4.800910] Run /sbin/init as init process [ 5.553236] systemd[1]: System time before build time, advancing clock. [ 5.739133] NET: Registered protocol family 10 [ 5.747578] Segment Routing with IPv6 [ 5.871152] systemd[1]: systemd 241 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid) [ 5.900733] systemd[1]: Detected architecture arm. [ 5.926595] systemd[1]: Set hostname to <openhabian>. [ 8.290457] systemd[1]: /lib/systemd/system/nmbd.service:9: PIDFile= references path below legacy directory /var/run/, updating /var/run/samba/nmbd.pid → /run/samba/nmbd.pid; please update the unit file accordingly. [ 8.496003] random: systemd: uninitialized urandom read (16 bytes read) [ 8.540854] random: systemd: uninitialized urandom read (16 bytes read) [ 8.550968] systemd[1]: Listening on Syslog Socket. [ 8.562417] random: systemd: uninitialized urandom read (16 bytes read) [ 8.572513] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. [ 8.589453] systemd[1]: Listening on initctl Compatibility Named Pipe. [ 8.601627] systemd[1]: Started Forward Password Requests to Wall Directory Watch. [ 8.617383] systemd[1]: Listening on fsck to fsckd communication Socket. [ 8.629263] systemd[1]: Reached target Swap. Raspbian GNU/Linux 10 openhabian ttyS0 openhabian login: openhabian Password: Last login: Sat Aug 7 20:27:00 CEST 2021 on ttyS0 Linux openhabian 5.10.17+ #1403 Mon Feb 22 11:26:13 GMT 2021 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. ############################################################################### ############### openhabian ################################################## ############################################################################### ## Ip = 192.168.100.79 ## Release = Raspbian GNU/Linux 10 (buster) ## Kernel = Linux 5.10.17+ ## Platform = Raspberry Pi Zero W Rev 1.1 ## Uptime = 0 day(s). 0:0:56 ## CPU Usage = 100% avg over 2 cpu(s) (1 core(s) x 1 socket(s)) ## CPU Load = 1m: 3.35, 5m: 0.99, 15m: 0.34 ## Memory = Free: 0.25GB (54%), Used: 0.21GB (46%), Total: 0.46GB ## Swap = Free: 0.83GB (100%), Used: 0.00GB (0%), Total: 0.83GB ## Root = Free: 3.25GB (48%), Used: 3.42GB (52%), Total: 7.00GB ## Updates = 31 apt updates available. ## Sessions = 1 session(s) ## Processes = 85 running processes of 32768 maximum processes ############################################################################### _ _ _ ____ _ ___ ___ ___ ___ | | | | / \ | __ ) (_) ____ ___ / _ \ / _ \ / _ \ / _ \ | |_| | / _ \ | _ \ | | / _ \ / _ \ | (_) | (_) | __/| | | || _ | / ___ \ | |_) )| || (_) || | | | \___/| __/ \___/|_| |_||_| |_|/_/ \_\|____/ |_| \__|_||_| | | |_| 3.1.0 - Release Build Looking for a place to get started? Check out 'sudo openhabian-config' and the documentation at https://www.openhab.org/docs/installation/openhabian.html The openHAB dashboard can be reached at http://openhabian:8080 To interact with openHAB on the command line, execute: 'openhab-cli --help' openhabian@openhabian:~$

Acessando página principal e criando conta



Ferramenta de configuração openHABian

As seguintes instruções são desenvolvidas para um Raspberry Pi, mas devem ser aplicáveis a todos os ambientes de hardware / todos os ambientes openHABian. Uma vez conectado ao console de linha de comando do seu sistema, execute a ferramenta de configuração openHABian digitando o seguinte comando:

(Dica: sudo executa um comando com direitos elevados e, portanto, pedirá sua senha. O padrão é openhabian).

sudo openhabian-config
Neste BLOG utilizei apenas para instalar o Mosquitto

Aqui estão os primeiros passos: (IMPORTANTE)
Getting Started - First Steps | openHAB

Colocando-o em prática

Saiba que:

As coisas são entidades que podem ser fisicamente adicionadas a um sistema. As coisas podem fornecer mais de uma função (por exemplo, um multi-sensor Z-Wave pode fornecer um detector de movimento e também medir a temperatura ambiente). As coisas não têm que ser dispositivos físicos; eles também podem representar um serviço web ou qualquer outra fonte gerenciável de informação e funcionalidade.

As vinculações podem ser pensadas como adaptadores de software, disponibilizando coisas para o seu sistema de automação residencial. São complementos que fornecem uma maneira de vincular itens a dispositivos físicos. Eles também abstraem os requisitos específicos de comunicação desse dispositivo para que ele possa ser tratado de forma mais genérica pelo quadro.

Os itens representam recursos que podem ser usados por aplicativos, seja em interfaces de usuário ou na lógica de automação. Os itens têm um Estado e podem receber comandos.

A ligação entre Coisas e Itens são Links. Um Link é uma associação entre exatamente um canal e um item. Se um canal estiver vinculado a um Item, ele será "ativado", o que significa que a capacidade que o Item representa é acessível através desse Canal. Os canais podem estar vinculados a vários itens e itens podem estar vinculados a vários canais.

Para ilustrar esses conceitos, considere o exemplo abaixo de um atuador de dois canais que controla duas luzes:

O atuador é uma coisa que pode ser instalada em um armário elétrico. Possui um endereço físico e deve ser configurado para ser utilizado (lembre-se da visão física introduzida no início deste artigo).

Para que o usuário controle as duas luzes, ele ou ela acessa a capacidade do atuador Coisa (ligar e desligar duas luzes separadas) através de dois Canais, que estão vinculados a dois itens de switch apresentados ao usuário através de uma interface de usuário.

As coisas fornecem "Canais", que representam as diferentes funções que a Coisa proporciona. Onde a Coisa é a entidade física ou fonte de informação, o Canal é uma função concreta desta Coisa. Uma lâmpada física pode ter um canal de temperatura de cor e um canal de cores, ambos fornecendo funcionalidade da única lâmpada Coisa para o sistema. Para fontes de informação, a Coisa pode ser o clima local com informações de um serviço web com diferentes canais como temperatura, pressão e umidade.

Os canais estão vinculados a Itens, onde tais links são a cola entre a camada virtual e a física. Uma vez estabelecido esse link, uma Coisa reage aos eventos enviados para um item que está vinculado a um de seus Canais. Da mesma forma, envia ativamente eventos para Itens vinculados aos seus Canais.

Um tipo especial de Coisa é uma "ponte". Pontes são coisas que precisam ser adicionadas ao sistema para ter acesso a outras coisas. Um exemplo típico de uma ponte é um gateway IP para algum sistema de automação residencial não baseado em IP ou uma configuração de serviço web com informações de autenticação que cada coisa deste serviço web pode precisar.

A caixa de entrada contém uma lista de todas as coisas descobertas (DiscoveryResult) de todos os serviços de descoberta ativos. Um resultado de descoberta representa uma coisa descoberta de um tipo de coisa específica, que poderia ser instantânea como uma coisa. 

Uma vez que você tenha uma primeira visão geral, é hora de praticar. Aqui uma pequena lista das etapas que você precisará considerar para obter openHAB em funcionamento como seu sistema de automação residencial:
  • Instalar openHAB
Se você já possui um dispositivo inteligente, pesquise os addons para a marca ou tecnologia usada por esse dispositivo (ou simplesmente navegue na lista de complementos para quaisquer tecnologias ou serviços que você possa reconhecer)
  • Instale uma vinculação (em openHAB)
  • Defina uma "coisa"
  • Adicione um "canal" à "coisa" se não for criado pela vinculação
  • Defina um "item"
  • Vincule o "canal" ao seu "item"
  • Estabeleça um mapa de site
A maioria das coisas acima pode ser feita em openHAB através de processos de ponto e clique em uma interface gráfica do usuário. Mas lembre-se, há sempre mais de uma maneira de alcançar seu objetivo em openHAB.

Uma palavra final para os entusiastas do DIY. openHAB é muito flexível e pode suportar muitos dispositivos DIY. No entanto, você vai perceber rapidamente que DIY muitas vezes literalmente significa que você "fazê-lo você mesmo". Trabalhar com soluções DIY muitas vezes requer um nível mais profundo de compreensão, bem como mais paciência e perseverança do que a integração de dispositivos prontos para uso de fornecedores comerciais. 

A escolha é sua, é claro, mas você precisará estar preparado para gastar dinheiro ou tempo (e às vezes ambos) para tornar suas metas de automação residencial uma realidade. E muitas vezes, o investimento será significativo.

MONTAGEM



 

BREAKOUT W106

COMPONENTE


IO2

LED

DIGITAL

UBLOX W106


Instale MQTT no openHAB

Execute

sudo openhabian-config


em Optional Components, escolha o Mosquitto





exit


Testando se Mosquitto está ALIVE, com MQTTfx


Sucesso

Configurando ambiente (Things, Binding, Item) (Passo a passo)


















Execução




Questões: suporte@smartcore.com.br

FONTES: 

Sobre a SMARTCORE

A SmartCore fornece módulos para comunicação wireless, biometria, conectividade, rastreamento e automação.
Nosso portfólio inclui modem 2G/3G/4G/NB-IoT/Cat.M, satelital, módulos WiFi, Bluetooth, GNSS / GPS, Sigfox, LoRa, leitor de cartão, leitor QR code, mecanismo de impressão, mini-board PC, antena, pigtail, LCD, bateria, repetidor GPS e sensores.
Mais detalhes em www.smartcore.com.br

Um comentário: