Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


Въведение

Внезапно твърдият диск, след 7 години вярна служба, на моя десктоп-Ubuntu 10.04.4 LTS си замина. Анализ показа поява на 48 лоши сектори. Това го усетих с замръзване на браузъра и последвал опит за рестарт на системата. Ubuntu е дублирана от Windows XP SP3 и при опит да зареди тази система ме посрещаше мигновено синия екран на смъртта. Убеден, аз отключих този диск и започнах разучаване на пазара за избор на нов. От друга страна Ubuntu 10.04.4 ми лежеше на сърцето и едва ли щях да се разделя, но започнах да се замислям за преход към по-свежа дистрибуция.

Моментно замених SATA диска с PATA, когото превърнах в експериментална площадка. Последва инсталация на редица системи и на финала останаха LinuxMint 13 Mate срещу Ubuntu 12.04 32 bit.

Слабото място на системата ми е нейната възраст - 7 години вече. Едва 1GB Ram-памет DDR2@667MHz и видеокарта nVidia Inno3D GeForce 7600. 1GB памет e оскъдно за съвременна система, а GeForce 7600 си е кандидат пенсионер. При тези обстоятелства 32 bit-система е предимство.

Така в един момент се задържах на Ubuntu 12.04 32 bit. Инсталирах всички възможни десктоп обкръжения (DE) с идеята минимум разход на ресурси. Задържах се на GNOME 3 Classic без ефекти, защото предпочитам семпъл десктоп, а не подобие на таблет и най-вече съображенията за лимит.

Инсталация на nVidia драйвери в Ubuntu 12.04

При заход в глобално меню System Settings > All Settings > Hardware > Additionаl Drivers пред вас изплува подобен прозорец, изобразяващ списък с предложения от версии драйвери за видеокартата на вашата система.

nVidia X Server Settings

Снимката показва текущия ми драйвер. Тук избирате или премахвате дадена версия. При първоначален опит за инсталация ми бе предложен списък от три версии съобразно моята видеокарта. Това бе версия 176, 304 и 304_update.

За съжаление и три версии удариха на камък. И това важеше и за LinuxMint 13 Mate. След инсталация - системата изискваше рестарт и при опит да зареди, увисваше с черен екран, от когото се излизаше само с студен рестарт (бутон Reset на предния панел на машината). След безуспешен опит с версия 176, аз реших да преинсталирам от нула и след поредни 30 минути инсталация опитах с версия 304. И отново замръзване с черен екран. Тук обаче не прибързах и подходих по-практично.

Отново студен рестарт. При поява на GRUB меню избрах опция:
Ubuntu, with Linux 3.8.x.-generic (recovery mode)

Този режим превключва на Recovery menu с поредица опции. В случая ни интересува:
root Drop to root shell prompt

Името еднозначно подсказва, че попадате в конзола с root-привилегии:
root@prodesktop :~#

Тук е момента да въведете първата команда от списъка долу. Тя ще заличи всичко свързано с nVidia и ще ви даде възможност да зареди Ubuntu в графичен режим. Следва банално копиране от трета команда до края и тяхното изпълнение.

Команди:
  1. sudo apt-get remove --purge -y nvidia*
  2. sudo reboot
  3. sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
  4. sudo apt-get update
  5. sudo apt-get upgrade
  6. sudo apt-get install nvidia-current
  7. sudo reboot
  8. sudo apt-get install nvidia-settings
  9. gksudo nvidia-settings

Резултат:

nVidia X Server Settings

nVidia X Server Settings

nVidia X Server Settings

Продължение към описаните патила бе, че всичко това се водеше при свързана видеосистема, чрез DVI-DVI портове на видеокарта - монитор. Видеокартата ми няма VGA - порт и подключване към такъв на монитора става през преходник. В този случай драйверите не засичаха монитора и не разрешаваха резолюция по-голяма от 1024х760.

Заключение

На старата ми нова машина се настани удобно Ubuntu 12.04.4 LTS 32bit. За твърд диск без избран 500GB WD Blue серия. А текущ видеодрайвер - NVIDIA Driver Version: 304.116.

Резултатът задмина желаното. Състояние при първоначално зареждане на системата:

System Monitor






до нови срещи   ^.^
22.02.2014 profruit 


| |

В стандартното съдържание на PHP има няколко интересни интерфейса и един от тях е ArrayAccess. Този интерфейс съществено изменя поведението на обектите в езика. На практика, ArrayAccess позволява обръщение към обекта по подобие на масив ползувайки познатото

$array[] = 'newItem'.

Разбира се, за пълноценна емулация на това поведение е нужна имплементация на споменатия интерфейс. За него научаваме от извора.
Интерфейс ArrayAccess в PHP
interface ArrayAccess {

 /* Методи */
 abstract public offsetExists ( $offset )
 abstract public offsetGet ( $offset )
 abstract public offsetSet ( $offset , $value )
 abstract public offsetUnset ( $offset )

}

Интерфейсът съдържа 4 абстрактни метода:
  • abstract public boolean offsetExists(mixed $offset) — съществува ли значение по зададения ключ;
  • abstract public mixed offsetGet(mixed $offset) — получаване на значение по индекс;
  • abstract public void offsetSet(mixed $offset, mixed $value) — установява значение с посочен индекс;
  • abstract public void offsetUnset(mixed $offset) — премахва значението.

Как да се възползваме от интерфейса?


Нека създадем клас Book, опишем нужните ни свойства и презаредим методите на интерфейса. Забележете видимостта на свойствата.

клас book.class.php
<?php

class Book implements ArrayAccess{
 
 public $title;
 private $author;
 protected $isbn;

 function offsetExists($item){
  return isset($this->$item);
 }

 function offsetUnset($item){
  unset($this->$item);
 }

 function offsetSet($item, $value){
  $this->$item = $value;
 }

 function offsetGet($item){
  return $this->$item;
 }

}

И създадем основен файл, в когото ще добавим book.class.php, ще създадем обект и ще го обходим.

index.php
<?php

// включване на класа
include 'book.class.php';

// създаване на инстанция
$book = new Book();

// добавяне на значение
$book['title'] = 'PHP4';

 // проверка и прочит на значение
if(isset($book['title'])){

 echo $book['title'];

 // заличаване
 unset($book['title']);

 // добавяне на нови
 $book['title'] = 'PHP5';
 $book['author'] = 'John Smith';
 $book['isbn'] = '123456';
}

echo '<pre>'. print_r($book, true).'</pre>';

echo $book['isbn'];

Резултат на нашата работа в браузъра ще бъде изведено това:

PHP4

Book Object
(
    [title] => PHP5
    [author:Book:private] => John Smith
    [isbn:protected] => 123456
)

123456

За програмист на процедурен код това е повече от типично. Няма ги стрелките, двойните точки, присъщи за синтаксиса на ООП-програмирането. Съществена част е достъпа до закрити свойства и че всеки метод автоматично се задейства според нужната операция: съществуване, присвояване, премахване.

П.П.
Очаквайте продължение ...






до нови срещи   ^.^
11.01.2014 profruit 


| |
Най-удобният начин за Добрия да гледа клипове за Добрия е чрез VLC плейъра. Дори има посветена рубрика в десния сайдбар за това, където подбирам клипове само за Добрия!

В моя Top 10 Movie каталог челната тройка оглавяват филмите




Тези три филма ме изпълват с енергия. Вливат ми сили, вяра, оптимизъм, заряд и затова профилактично си ги пускам сутрин след сън или вечер, когато се прибера вкъщи. След тях всичко, което се осмелява да се нарича филм, намирам за жалка латиноамериканска боза или турска сапунка.

Ситуацията налага удобство за представяне, а такова предлага преди всичко YouTube. Нещата обаче преляха до цинизъм, ярко изразен в тъпи коментари или изплуващи препратки към адреси, лайкове и прочие тъпня. Наточил си се е и изведнъж екрана се обсипва с малоумия, които се чудиш как да изгасиш. Неправилен клик и те пренасочват към циганската махала. Тъпо и негодувам. Негативизмът се подсилва от случаен краш на Firefox, защото от Chrome изпитвам уртикария.

Цаката е в VLC. Копирате адреса от адресното поле на браузъра и го пляскате в VLC (Media -> Open Network Stream -> Network -> Paste -> Play), след което гледате гладко без всякакви дразнещи надписи.

VLC

В случай, че разполагате с аудиоуредба, то е неизбежно настройката на еквалайзер. Сигурен начин съседите ви да знаят, че вие се презареждате!

VLC





до нови срещи   ^.^
21.12.2013 profruit 

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога