Jarvis: Difference between revisions

From NURDspace
(22 intermediate revisions by 3 users not shown)
Line 4: Line 4:
|Status=Production
|Status=Production
|Purpose=Infra
|Purpose=Infra
|Location=Coherence
|Tool=No
|Tool=No
}}
}}
Jarvis is the VM running Home Assistant (HASS) and is able to automate tasks in the space
Jarvis is the VM running Home Assistant ([http://hass.io HASS] ) on [[Coherence]] and is able to automate tasks in the space
See http://10.208.11.32/ or http://10.208.11.32:8123 when port 80 is not working. Port 80 should work because of a port forward started from /etc/rc.local.
 
== Web interface ==
* http://10.208.11.32/ in case this does not work http://10.208.11.32:8123/
* user: nurds
* pass: same as wifi ask in the space
 
=== Known issues ===
* Firefox
** required key not provided @ data['redirect_url'] : https://github.com/home-assistant/home-assistant-polymer/issues/2828#issuecomment-467589688
 
== VM access ==
If you want access to the VM itself, for instance with SSH, use following creds:
* User: nurds
* Pass: the long one :)
 
== Starting HASS ==
== Starting HASS ==
<pre>
It starts automatically within docker
/etc/init.d/homeassistant install
 
/etc/init.d/homeassistant start
iptables port forward: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8123
</pre>
It should do this on boot through /etc/rc.local.


== Current Automations ==
== Current Automations ==
Line 24: Line 37:
=== OpenTherm Gateway===
=== OpenTherm Gateway===
OpenTherm gateway has been put between the heater and the thermostat, see [[OpenTherm_Gateway]]
OpenTherm gateway has been put between the heater and the thermostat, see [[OpenTherm_Gateway]]
=== Flukso ===
Runs stuff for power meter, see [[Flukso]].
=== EPC (PDU) ===
=== EPC (PDU) ===
https://gist.github.com/zarya/52b603146faac2b3d42e417532975054
https://gist.github.com/zarya/52b603146faac2b3d42e417532975054
Line 39: Line 50:


http://wiki.gude.info/FAQ_EPC_CmdLine
http://wiki.gude.info/FAQ_EPC_CmdLine
<pre><nowiki>
root@jarvis:/home/homeassistant/.homeassistant# cat switches.yaml
- platform: command_line
  switches:
    epc2_1:
      command_on: "/usr/bin/curl http://<IP>/SWOV.CGI?s1=1"
      command_off: "/usr/bin/curl http://<IP>/SWOV.CGI?s1=0"
      command_state: "/opt/epc/epccontrol2.pl --host=<IP> | grep 1"
      value_template: '{{ value == "1 is ON" }}'
      friendly_name: epc2 1
</nowiki></pre>


=== APC (PDU) ===
=== APC (PDU) ===
Line 70: Line 70:
   value_template: '{{ value | float / 10 }}'
   value_template: '{{ value | float / 10 }}'


</nowiki></pre>
OLD:
<pre><nowiki>
- platform: command_line
  name: pdu1_input_amps
  command: "snmpget -v1 -OvqU -c public 10.208.30.150 .1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1"
  unit_of_measurement: "A"
  value_template: '{{ value | multiply(10) }}'
</nowiki></pre>
</nowiki></pre>


Line 102: Line 93:
</nowiki></pre>
</nowiki></pre>


OLD:
=== Notifications ===
<pre><nowiki>
==== LEDtickers ====
    pdu1_1:
You can use services '''notify.ledticker_zaal1''', '''notify.ledticker_bar''' and '''notify.ledticker_rookhok''' to send stuff to individual LEDtickers, or '''notify.all_ledtickers''' to send to all. The custom component for this can be found in ''/usr/share/hassio/homeassistant/custom_components/ledticker''. New LEDtickers can be set up in ''/usr/share/hassio/homeassistant/configuration.yaml''.
      command_on: "snmpset -v1 -c private 10.208.30.150 .1.3.6.1.4.1.318.1.1.4.4.2.1.3.1 i 1"
 
      command_off: "snmpset -v1 -c private 10.208.30.150 .1.3.6.1.4.1.318.1.1.4.4.2.1.3.1 i 2"
Todo:
      command_state: "snmpget -v1 -OvqU -c public 10.208.30.150 .1.3.6.1.4.1.318.1.1.4.4.2.1.3.1"
* Possibility to use host names instead of IPs
      value_template: '{{ value == "1" }}'
 
      friendly_name: pdu1 1
==== NURDbot ====
</nowiki></pre>
Spams stuff using service '''notify.nurdbot''' @ [[Nurdbot]] using ''/usr/share/hassio/homeassistant/jsb/jsb-udpsend''.
 
== Device tracker ==
We get MAC addresses that are connected to the Wifi from the Aruba AP. We do not track devices by default.
=== Why would you want to be tracked? ===
We can do reporting of tracked devices and whether they are 'home' or 'not_home'.
One example that we have is !who on [[Nurdbot]].
We might also do personalized automations at some point.


=== [[SonOff]] ===
=== Enable tracking for your MAC address ===
<pre><nowiki>
If you want your device to be tracked, you need to search for your MAC address in ''/usr/share/hassio/homeassistant/known_devices.yaml'' and:
- platform: mqtt
* Set ''track'' to ''true''
  name: "Grote zaal rechts"
* Set ''name'' to something recognizable
  state_topic: "space/grotezaal/rechts/1/stat"
* Restart hass
  command_topic: "space/grotezaal/rechts/1"
* Configure a ''person'' in http://jarvis:8123/config/person with the tracked device(s)
  qos: 0
  payload_on: "on"
  payload_off: "off"
  retain: true
</nowiki></pre>


== Changelog ==
== Changelog ==
Line 131: Line 124:
* Added grote zaal rechts (TL)
* Added grote zaal rechts (TL)
* Added Webcam connected to [[SlabPi]]
* Added Webcam connected to [[SlabPi]]
* Moved to hass.io
* Moved SonOff Basic to ESPHome and MQTT discovery
* Added octoprint
* Enabled device tracking through Aruba AP


== New jarvis ==
== Installation ==
We want to be able to easily update home assistant. One way to achieve this is to use docker. On our proxmox environment it is not easy to run docker in a proxmox container, so we set up a prober VM for this.
We want to be able to easily update home assistant. One way to achieve this is to use Hass.io which in turn uses docker. On our proxmox environment it is not easy to run docker in a proxmox container, so we set up a proper VM for this.
 
The idea is to get the config from the old jarvis working and at some point have the new one take the IP address of the old one. For now the new one is configged with DHCP.
 
* Temp IP: 10.208.42.142
* User: nurds
* Pass: the long one :)


=== Docker installation ===
=== Docker installation ===
Line 148: Line 139:
https://www.home-assistant.io/blog/2017/11/29/hassio-virtual-machine/
https://www.home-assistant.io/blog/2017/11/29/hassio-virtual-machine/
Using the install script https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install
Using the install script https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install
== Actions done ==
* Add all mqtt sensors
* Add all other config that works out of the box
== Actions open ==
* Migrate nurdbot notifier
* Migrate APC power bar scripts
** on/off
** Amp meter
* Migrate noname power bar scripts
* Migrate all automations
== Web interface ==
* user: nurds
* pass: same as wifi ask in the space


===To Do===
==To Do==
[[Radiator automation]] integration.
[[Radiator automation]] integration.

Revision as of 23:07, 23 November 2019

Jarvis
Jarvis.jpg
Participants Dennis
Skills Electronics, IoT
Status Production
Niche
Purpose Infra
Tool No
Location Coherence
Cost
Tool category

Jarvis Property "Tool Image" (as page type) with input value "File:{{{Picture}}}" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process. {{{Picture}}} {{#if:No | [[Tool Owner::{{{ProjectParticipants}}} | }} {{#if:No | [[Tool Cost::{{{Cost}}} | }}

Jarvis is the VM running Home Assistant (HASS ) on Coherence and is able to automate tasks in the space

Web interface

Known issues

VM access

If you want access to the VM itself, for instance with SSH, use following creds:

  • User: nurds
  • Pass: the long one :)

Starting HASS

It starts automatically within docker

iptables port forward: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8123

Current Automations

  • Stop music on mpd when the space is closed
  • Start music on mpd when the space opens.
  • Power down EPC/APC and Sonoff when space is closed.
  • Power up Sonoff when space is open.

Custom stuff

OpenTherm Gateway

OpenTherm gateway has been put between the heater and the thermostat, see OpenTherm_Gateway

EPC (PDU)

https://gist.github.com/zarya/52b603146faac2b3d42e417532975054

- platform: command_line
  switches:
    epc2_1:
      command_on: "/config/epc.py <IP> 1 1"
      command_off: "/config/epc.py <IP> 1 0"
      command_state: "/config/epc.py <IP> 1"
      value_template: '{{ value == "ON" }}'

http://wiki.gude.info/FAQ_EPC_CmdLine

APC (PDU)

Off snmpset -v1 -c private 10.208.30.150 .1.3.6.1.4.1.318.1.1.4.4.2.1.3.1 i 2 
On snmpset -v1 -c private 10.208.30.150 .1.3.6.1.4.1.318.1.1.4.4.2.1.3.1 i 1
get snmpget -v1 -OvqU -c public 10.208.30.150 .1.3.6.1.4.1.318.1.1.4.4.2.1.3.1
output 1 == on 2 == off
get input amps (x10) snmpget -v1 -OvqU -c NURDsnmp 10.208.30.150 .1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1

Sensor (Amps)

- platform: snmp
  name: 'pdu1_input_amps'
  host: <IP>
  community: "this"
  baseoid: .1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1
  version: "1"
  accept_errors: true
  unit_of_measurement: 'A'
  value_template: '{{ value | float / 10 }}'

Switch

- platform: snmp
  name: pdu1_1
  host: <IP>
  baseoid: .1.3.6.1.4.1.318.1.1.4.4.2.1.3.1
  community: "this"
  payload_on: 1
  payload_off: 2
  version: "1"
- platform: snmp
  name: pdu1_1
  host: <IP>
  baseoid: .1.3.6.1.4.1.318.1.1.4.4.2.1.3.2
  community: "this"
  payload_on: 1
  payload_off: 2
  version: "1"

Notifications

LEDtickers

You can use services notify.ledticker_zaal1, notify.ledticker_bar and notify.ledticker_rookhok to send stuff to individual LEDtickers, or notify.all_ledtickers to send to all. The custom component for this can be found in /usr/share/hassio/homeassistant/custom_components/ledticker. New LEDtickers can be set up in /usr/share/hassio/homeassistant/configuration.yaml.

Todo:

  • Possibility to use host names instead of IPs

NURDbot

Spams stuff using service notify.nurdbot @ Nurdbot using /usr/share/hassio/homeassistant/jsb/jsb-udpsend.

Device tracker

We get MAC addresses that are connected to the Wifi from the Aruba AP. We do not track devices by default.

Why would you want to be tracked?

We can do reporting of tracked devices and whether they are 'home' or 'not_home'. One example that we have is !who on Nurdbot. We might also do personalized automations at some point.

Enable tracking for your MAC address

If you want your device to be tracked, you need to search for your MAC address in /usr/share/hassio/homeassistant/known_devices.yaml and:

Changelog

  • Added the EPC PDU's to HASS
  • Added the space state
  • Added power usage
  • Added Axis camera
  • Added grote zaal rechts (TL)
  • Added Webcam connected to SlabPi
  • Moved to hass.io
  • Moved SonOff Basic to ESPHome and MQTT discovery
  • Added octoprint
  • Enabled device tracking through Aruba AP

Installation

We want to be able to easily update home assistant. One way to achieve this is to use Hass.io which in turn uses docker. On our proxmox environment it is not easy to run docker in a proxmox container, so we set up a proper VM for this.

Docker installation

Home assistant config location: /usr/share/hassio/homeassistant# Enabled docker repo and installed it (https://docs.docker.com/install/linux/docker-ce/ubuntu/). User nurds is in the docker group so it can do docker things without sudo.

Installed HASS.IO x86 https://www.home-assistant.io/blog/2017/11/29/hassio-virtual-machine/ Using the install script https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install

To Do

Radiator automation integration.